Підключення Google Reviews API для отримання відгуків у Webitel
Якщо ваші заклади представлена на картах Google, а клієнти залишають відгуки, то найімовірніше у вас виникала задача опрацювання цих відгуків. Зазвичай все залежить від кількості точок на карті та відгуків. Звичайно, ви можете закрити цю задачу просто виділивши окрему людину. А що, якщо я вам скажу, що все це можна автоматизувати з допомогою Webitel? Коли клієнт залишив 5 зірок — автоматично подякувати, а якщо менше — направити на вільного оператора для опрацювання. На додаток, вам не потрібно буде жодної додаткової ліцензії чи навичка програмування — усе можна налаштувати лише використовуючи конструктор Webitel. Цікаво? Тоді ця стаття саме для вас 😉
Google My Business API
Розпочнемо з підготовки. У вас вже має бути створений проєкт в Google Cloud, адже він знадобиться для активації API та підключення ключів доступу. А зараз знадобиться Project number та Project ID, які ви знайдете на першій сторінці:
З цими даними необхідно заповнити форму надання доступу до Google My Business API та очікувати на підтвердження (пишуть, що може тривати до 2-х тижнів, проте, у мене це зайняло 3 робочих дні).
Після підтвердження, вам необхідно активувати API:
- Google My Business API
- My Business Business Information API
- My Business Account Management API
Перший етап налаштування завершений, переходимо до авторизації 😎
Google OAuth 2.0 Client
Переходимо у розділ Credentials та створюємо OAuth 2.0 Client:
Копіюємо значення полів для подальшого отримання токенів:
- Client ID
- Client secret
Формуємо строку з необхідним для майбутньої інтеграції переліком дозволів. Зверніть увагу на %%CHANGE-ME%% — замініть на ваш Client ID:
https://accounts.google.com/o/oauth2/auth?client_id=%%CHANGE-ME%%&redirect_uri=http://127.0.0.1&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbusiness.manage+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.business.manage+profile&email&response_type=code&include_granted_scopes=true&access_type=offline&state=state_parameter_passthrough_value
Сформовану строку відкривайте у браузері, після чого система запросить вас пройти авторизацію. По завершенню, ви будете направлені на пусту сторінку. Все гаразд, так і має бути! Нам необхідно дістати значення code зі строки цієї сторінки:
І завершальний крок на цьому етапі — отримати пару access_token та refresh_token. Відкривайте ваш улюблений HTTP Rest Client та надсилайте запит (замінивши змінні на власні значення):
POST https://oauth2.googleapis.com/token HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"code": "{{code_from_site}}",
"client_id": "{{client_id}}",
"client_secret": "{{client_secret}}",
"redirect_uri": "http://127.0.0.1",
"access_type": "offline",
"grant_type": "authorization_code"
}
У відповідь ви отримаєте токен, який “житиме” 1 годину:
{
"access_token": "HIDDEN",
"expires_in": 3599,
"refresh_token": "HIDDEN",
"scope": "https://www.googleapis.com/auth/business.manage https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openid",
"token_type": "Bearer",
"id_token": "HIDDEN"
}
Пізніше ми з вами налаштуємо автоматичне продовження цього токена. Наразі переходимо до наступного етапу налаштування.
Ідентифікатор Account та Location
Для отримання відгуків, нам необхідно знати код вашого Google Account та Location на карті. Найпростіший та найшвидший спосіб — виконати API запит, скориставшись access_token з попереднього пункту.
Ваш ідентифікатор:
GET https://mybusinessaccountmanagement.googleapis.com/v1/accounts HTTP/1.1
Authorization: Bearer {{access_token}}
Ідентифікатор вашої точки:
GET https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{{account_id}}/locations?read_mask=name,title HTTP/1.1
Authorization: Bearer {{access_token}}
Це будуть цифрові значення, типу: 113478846864290431250. Записали та переходимо у Webitel.
Підготовка Webitel
Дві основні вимоги до Webitel:
- Версія не менше v23.09
- flow_manager з підтримкою redis
Щодо першого, тут все зрозуміло. Що стосується другого, то я використав наш новий додаток cache для збереження токену та інформації останню синхронізацію відгуків. Якщо не підключити redis, то ці налаштування зберігатимуться в оперативній памʼяті, а отже, після кожного перезавантаження, схема забиратимете знову всі коментарі з Google Maps, а не лише нові.
Встановіть redis та підключіть його до сервісу flow_manager додавши параметри запуску у файлі /etc/systemd/system/flow_manager.service
:
-redis_host=127.0.0.1 -redis_port=6379 -redis_database=0
Перезапустить сервіс. Другу умови ми виконали.
Google Refresh Token
Для актуалізації токену, я створив просту службову схему, яка виконує http запит, та записує у redis значення нового токену. Готову схему Refresh token можна звантажити собі й змінити значення на власні:
"client_id": "%%CHANGE_ME%%",
"client_secret": "%%CHANGE_ME%%",
"refresh_token": "%%CHANGE_ME%%"
Перейдемо у розділ Triggers та створимо задачу на запуск цієї схеми погодинно:
Усе, свіженький токен у нас буде, можемо налаштовувати синхронізацію відгуків з Webitel!
Отримання відгуків з карти Google
Алгоритм дій наступний:
Щогодини (можна й частіше або навпаки) запускаємо схему, яка забиратиме лише нові відгуки та записуватиме як абонента у чергу вхідних задач.
Відгук має наступний формат:
{
"reviewId": "HIDDEN",
"reviewer": {
"profilePhotoUrl": "https://lh3.googleusercontent.com/a/HIDDEN=s120-c-rp-mo-ba2-br100",
"displayName": "HIDDEN"
},
"starRating": "FIVE",
"comment": "Професіональний підхід до клієнтів!молодці\n\n(Translated by Google)\nProfessional approach to customers! Well done",
"createTime": "2019-06-01T10:30:32.110545Z",
"updateTime": "2019-06-01T10:30:32.110545Z",
"name": "accounts/HIDDEN/locations/HIDDEN/reviews/HIDDEN"
}
Забираємо до себе:
reviewId
- ідентифікатор відгуку. Без нього не зможемо надати відповідь. Ми його запишемо в "номер" абонента черги. Це спростить нам пошук дублів. Якщо користувач змінив свій відгук, то старий запис у черзі анулювати, а новий — додаємо.updateTime
- це нам знадобиться для довантажування лише нових записів.starRating
- зірочки, присутні завжди. Будемо заміняти слово на emoji.comment
- коментар, може й не бути.displayName
- імʼя користувача Google.profilePhotoUrl
- посилання на його аватарку.
Створюю новий тип звʼязку в довіднику:
Та нову чергу вхідних задач:
Далі вам знадобиться моя схема для синхронізації відгуків. Завантажити Sync data schema можна тут і закинути до себе у Webitel. В самій схемі вам потрібно вказати Google Account & Location:
А для елементів Patch Member та Callback Queue оберіть вашу чергу вхідних задач та створений тип засобу звʼязку:
Тепер додамо цю схему у тригер, щоб синхронізація відгуків відбувалася теж погодинно:
Усе, після першого запуску, отримаєте усі відгуки як абоненти у черзі задач.
Робота оператора з відгуками
Для того, щоб оператор мав можливість опрацьовувати відгуки, нам потрібна ще одна схема Reply to a review, яку завантажуєте до себе.
У середині достатньо заповнити лише Google Account & Location, як і у випадку з синхронізацією відгуків. Привʼязуємо її до нашої черги:
Та назначаємо операторів 🥳
Відгук автоматично розподіляється на оператора, який має можливість написати відповідь:
Висновок
З допомогою засобів Webitel я повністю налаштував інтеграцію з відгуками на картах Google, створив форму для відповіді операторам і запустив усе це за лічені дні. Найбільше часу зайняло очікування активації API та читання документації 🤣
Ви можете вдосконалити сценарій використання, автоматизувати відповіді, щоб на операторів йшли лише негативні відповіді. Або інші варіанти. Шаблон я вам надав 😇