...

пятница, 14 ноября 2014 г.

Грабли, на которые я наступил при скрещивании CRM c Google Calendar

Как обычно происходит с коробочными продуктами, не все решения устраивают, и приходится улучшать бизнес-процессы при помощи внешних инструментов. В нашем случае трудоемко было работать с встроенным календарем. Основная проблема заключалась в том, что нельзя было одновременно ставить задачу и смотреть занятость сотрудников – при этом возникали сложности у двух смежных отделов.

Мы решили внедрить гугл календарь:

image



До этого с API Гугла я не работал, поэтому первым делом по поиску нашел документацию, удобно, что там же сразу была указана ссылка на GIT исходников.


Первые грабли: в указанной документации описаны объекты, которые сейчас в исходниках завернуты в другие объекты. Изучив код и поискав решения в интернете, я написал код подключения к календарю и добавил первый календарь.


«Здорово, как быстро все получилось! У нас почти все готово, осталось немного: добавить все нужные нам календари и закинуть в них события», подумал я и открыл интерфейс календаря в браузере.

И тут меня поджидали вторые грабли: в интерфейсе я не обнаружил добавленных календарей. Как понять, где они пропали? Я написал код, который возвращал список созданных календарей. Оказалось, их там было уже штук 10. Как же так — все работает, календари создаются и даже возвращаются. А в интерфейсе их нет как не было…


OK Google, что я делаю не так?


Пришлось опять копать. Нашел: календари добавляются в сервисный аккаунт (147837410720-t2rf13ce77not3h58ubgсme3q682nr54@developer.gserviceaccount.com). Для того чтобы календари были видны, их, оказывается, необходимо было добавить к основному.


Добавляем следующим образом :



$service = GoogleAuth::getInstance();
$scope = new Google_Service_Calendar_AclRuleScope();
$scope->setType('user');
$scope->setValue('Ваш основной емаил@gmail.com');

$rule = new Google_Service_Calendar_AclRule();
$rule->setRole('owner');
$rule->setScope($scope);
$result = $service->acl->insert($calId, $rule);





Я расслабился и наслаждался, календари создавались, события записывались, все работало как часы. Но и тут меня поджидали очередные грабли!

Внезапно в один тяжелый понедельник Гугл перестал принимать токен, выдавая ошибку (invalid_grant). Искали два дня всем отделом черную кошку в темной комнате. Нашли. Недавняя смена времени на зимнее время привела к отставанию нашего сервака от реального времени, и Гуглу это не нравилось. После корректировки времени все заработало.

Пока календари работают, с интересом ждем очередных грабель от Гугла.


Буду рад, если данным постом кому-нибудь помогу сократить время на поиск решения проблем.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий