Підключення Google Reviews API для отримання відгуків у Webitel

--

Якщо ваші заклади представлена на картах Google, а клієнти залишають відгуки, то найімовірніше у вас виникала задача опрацювання цих відгуків. Зазвичай все залежить від кількості точок на карті та відгуків. Звичайно, ви можете закрити цю задачу просто виділивши окрему людину. А що, якщо я вам скажу, що все це можна автоматизувати з допомогою Webitel? Коли клієнт залишив 5 зірок — автоматично подякувати, а якщо менше — направити на вільного оператора для опрацювання. На додаток, вам не потрібно буде жодної додаткової ліцензії чи навичка програмування — усе можна налаштувати лише використовуючи конструктор Webitel. Цікаво? Тоді ця стаття саме для вас 😉

Google My Business API

Розпочнемо з підготовки. У вас вже має бути створений проєкт в Google Cloud, адже він знадобиться для активації API та підключення ключів доступу. А зараз знадобиться Project number та Project ID, які ви знайдете на першій сторінці:

Google Cloud Project
Google Cloud Project

З цими даними необхідно заповнити форму надання доступу до Google My Business API та очікувати на підтвердження (пишуть, що може тривати до 2-х тижнів, проте, у мене це зайняло 3 робочих дні).

Після підтвердження, вам необхідно активувати API:

  • Google My Business API
  • My Business Business Information API
  • My Business Account Management API
Google API
Google API

Перший етап налаштування завершений, переходимо до авторизації 😎

Google OAuth 2.0 Client

Переходимо у розділ Credentials та створюємо OAuth 2.0 Client:

Google OAuth 2.0 Client
Google 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 зі строки цієї сторінки:

Google OAuth 2.0 Code
Google OAuth 2.0 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 та створимо задачу на запуск цієї схеми погодинно:

Google Refresh Token
Google Refresh Token

Усе, свіженький токен у нас буде, можемо налаштовувати синхронізацію відгуків з 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 - посилання на його аватарку.

Створюю новий тип звʼязку в довіднику:

Webitel Communication Type
Webitel Communication Type

Та нову чергу вхідних задач:

Webitel Task Queue
Webitel Task Queue

Далі вам знадобиться моя схема для синхронізації відгуків. Завантажити Sync data schema можна тут і закинути до себе у Webitel. В самій схемі вам потрібно вказати Google Account & Location:

Google Account & Location
Google Account & Location

А для елементів Patch Member та Callback Queue оберіть вашу чергу вхідних задач та створений тип засобу звʼязку:

Add Member
Add Member

Тепер додамо цю схему у тригер, щоб синхронізація відгуків відбувалася теж погодинно:

Google Sync Reviews
Google Sync Reviews

Усе, після першого запуску, отримаєте усі відгуки як абоненти у черзі задач.

Робота оператора з відгуками

Для того, щоб оператор мав можливість опрацьовувати відгуки, нам потрібна ще одна схема Reply to a review, яку завантажуєте до себе.

У середині достатньо заповнити лише Google Account & Location, як і у випадку з синхронізацією відгуків. Привʼязуємо її до нашої черги:

Webitel Task Queue
Webitel Task Queue

Та назначаємо операторів 🥳

Відгук автоматично розподіляється на оператора, який має можливість написати відповідь:

Webitel Workspace
Webitel Workspace

Висновок

З допомогою засобів Webitel я повністю налаштував інтеграцію з відгуками на картах Google, створив форму для відповіді операторам і запустив усе це за лічені дні. Найбільше часу зайняло очікування активації API та читання документації 🤣

Ви можете вдосконалити сценарій використання, автоматизувати відповіді, щоб на операторів йшли лише негативні відповіді. Або інші варіанти. Шаблон я вам надав 😇

--

--

Не лише телефонія ☎️

Розповідаю про те, як ми створюємо 💙💛 платформу для ефективних комунікацій з клієнтами - Webitel