Чат Bot очень популярен в наши дни. С Chat Bot вы можете подключаться к своим клиентам с помощью Deeper Interactions и развивать свой бизнес.
В этой статье я расскажу, как разработать Viber Chat Bot за 6 простых шагов с использованием PHP.
1. Создать публичный аккаунт в Viber
Чтобы начать, прежде всего, вы должны иметь учетную запись Viber Public. Если у вас нет публичной учетной записи, подайте заявку на публичную учетную запись на странице публичных учетных записей Viber .
Как только ваша заявка будет одобрена, вам будет отправлено сообщение с приглашением, чтобы начать создание вашей публичной учетной записи. Чтобы создать учетную запись, вам необходимо:
• Перезагрузить устройство.
• Войдите на главный экран Публичных счетов. Вы увидите кнопку Создать публичные аккаунты .
• Нажмите на кнопку, и начните!
2. Получить токен аутентификации
Токен аутентификации генерируется при создании публичной учетной записи и может быть просмотрен администратором учетной записи на экране «Изменить информацию» публичной учетной записи.
Пример токена : 455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8
Пример страницы детализации аккаунта для редактирования Viber
3. Настройте webhook
Как только токен будет получен, вы сможете настроить webhook своей учетной записи . Этот веб-крючок будет использоваться для получения обратных вызовов и пользовательских сообщений от Viber.
Настройка webhook будет выполнена путем вызова API set_webhook с действительным и сертифицированным URL.
После отправки запроса set_webhook Viber отправит обратный вызов в webhook, чтобы проверить его доступность и вернет ответ пользователю.
Примечание . Перед отправкой запроса в API set_webhook нам необходимо иметь код для обработки обратного вызова из Viber по нашему URL-адресу webhook. Пример кода PHP приведен в этой статье.
Вызовите запрос POST к этому API:
https://chatapi.viber.com/pa/set_webhook
Параметры публикации:
{
"auth_token": "455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8",
"url": "https://mysite.com/webhook_page",
"event_types": ["delivered", "seen"]
}auth_token = Строка токена, предоставленная Viber при создании PA.
url = URL веб-крючка PA для получения обратных вызовов и сообщений от пользователей (должен использовать SSL, например, https)
event_type = (необязательно) Указывает типы событий Viber, о которых владелец PA хотел бы получать уведомления. Значения по умолчанию: [«доставлено», «увидено»]
Чтобы сделать запрос POST к API set_webhook , мы можем использовать cURL или такие инструменты, как POSTMAN. Вот пример кода PHP:
<?php
$url = 'https://chatapi.viber.com/pa/set_webhook';
$jsonData='{ "auth_token": "your_auth_token", "url": "https://yoursite.com/webhook_page" }';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
curl_close($ch);
?>После того, как мы вызовем set_webhook api, Viber отправит обратный вызов на URL-адрес webhook, чтобы подтвердить его доступность, т.е. https://mysite.com/webhook_page в приведенном выше примере. Формат данных обратного вызова следующий:
{
"event":"webhook",
"timestamp":1457764197627,
"message_token":4912661846655238145
}событие = тип обратного вызова — какое событие вызвало обратный вызов. Возможное значение — webhook.
timestamp = время события, которое вызвало обратный вызов
message_token = уникальный идентификатор сообщения
Теперь нам нужно дать ответ как
{
"status": 0,
"status_message": "ok",
"event_types": ["delivered", "seen"] //Not yet implemented
}status = результат действия (0 для успеха, номер ошибки для ошибок)
status_message = Ok или причина
ошибки event_types = доставлено или замечено (еще не реализовано)
Это установит URL-адрес webhook . Теперь, когда происходит событие, связанное с публичной учетной записью, обратный вызов отправляется на URL-адрес webhook, и нам нужно обрабатывать события в URL-адресе webhook, которые обсуждаются ниже.
Код для URL веб-крючка:
<?php
$request = file_get_contents("php://input");
$input = json_decode($request, true);
if($input['event'] == 'webhook') {
$webhook_response['status']=0;
$webhook_response['status_message']="ok";
$webhook_response['event_types']='delivered';
echo json_encode($webhook_response);
die;
}
else if($input['event'] == "subscribed") {
// when a user subscribes to the public account
}
else if($input['event'] == "conversation_started"){
// when a conversation is started
}
elseif($input['event'] == "message") {
/* when a user message is received */
$type = $input['message']['type']; //type of message received (text/picture)
$text = $input['message']['text']; //actual message the user has sent
$sender_id = $input['sender']['id']; //unique viber id of user who sent the message
$sender_name = $input['sender']['name']; //name of the user who sent the message
// here goes the data to send message back to the user
$data['auth_token'] = "4453b6ac1s345678-e02c5f12174805f9-95f29ebc06af09a8";
$data['receiver'] = $sender_id;
$data['text'] = "The message to send to user";
$data['type'] = 'text';
//here goes the curl to send data to user
$ch = curl_init("https://chatapi.viber.com/pa/send_message ");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
}
?>
4. Получить сообщение
Всякий раз, когда пользователь отправляет сообщение в общедоступную учетную запись в чате 1-к-1, в URL-адрес webhook отправляются следующие данные обратного вызова.
{
"event": "message",
"timestamp": 1457764197627,
"message_token": 4912661846655238145,
"sender":
{
"id": "01234567890A=",
"name": "yarden",
"avatar": "http://avatar_url"
},
"message":
{
"type": "text",
"text": "a message to the service",
"media": "http://download_url",
"location":
{
"lat": 50.76891,
"lon": 6.11499},
"tracking_data": "tracking data"
}
}
}событие = в случае сообщения, отправленного пользователем, значением события будет
отметка времени сообщения = время события, вызвавшего обратный вызов
message_token = уникальный идентификатор
отправителя сообщения = сведения об отправителе (идентификатор, имя, аватар)
сообщение = подробности сообщения, такие как текст, медиа ( если есть) и так далее
Таким образом, мы можем получить сообщение от пользователя и соответствующее сообщение может быть отправлено пользователю, что будет обсуждаться ниже.
5. Отправить сообщение
Чтобы отправить сообщение пользователю, нам нужно вызвать запрос Post на send_message api, как показано ниже:
Отправка текстового сообщения:
URL: https://chatapi.viber.com/pa/send_message
Параметры публикации:
{
"auth_token": "455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8",
"receiver": "01234567890A=",
"type": "text",
"text": "a message from pa"
}auth_token = Строка токена, предоставленная Viber при создании публичной учетной записи.
получатель = уникальный идентификатор пользователя viber, которому отправляется сообщение.
тип = тип сообщения («текст» для текстовых сообщений)
текст = текстовое сообщение для отправки
Отправка изображений:
URL: https://chatapi.viber.com/pa/send_message
{
"auth_token": "455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8",
"receiver": "01234567890A=",
"type": "picture",
"text": "Photo description",
"media": "http://www.images.com/img.jpg",
"thumbnail": "http://www.images.com/thumb.jpg"
}auth_token = Строка токена, предоставленная Viber при создании публичной учетной записи.
получатель = уникальный идентификатор пользователя viber, которому отправляется сообщение
тип = тип сообщения («картинка» для изображения)
текст = описание фотографии (может быть нулевым, если не требуется)
media = URL-адрес изображения (поддерживается только JPEG)
thumbnail = уменьшенное изображение URL (поддерживается только JPEG)
Точно так же мы также можем отправлять файловые сообщения.
6. Отправить клавиатуру (Меню)
API общедоступной учетной записи позволяет отправлять пользовательскую клавиатуру с помощью API send_message, чтобы предоставить пользователю набор предопределенных ответов или действий. Клавиатура может быть прикреплена к любому типу сообщения или отправлена на него. После получения клавиатура будет отображаться пользователю вместо родной клавиатуры устройства.
К сообщению можно прикрепить клавиатуру следующим образом:
URL: https://chatapi.viber.com/pa/send_message
Параметры публикации:
{
"auth_token": "455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8",
"receiver": "01234567890A=",
"type":"text",
"text":"The message",
"keyboard": {
"Type": "keyboard",
"BgColor": "#FFFFFF",
"Buttons": [
{
"Columns": 6,
"Rows": 1,
"BgColor": "#2db9b9",
"BgMediaType": "gif",
"BgMedia": "http://www.url.by/test.gif",
"BgLoop": true,
"ActionType": "open-url",
"ActionBody": "www.tut.by",
"Image": "www.tut.by/img.jpg",
"Text": "Key text",
"TextVAlign": "middle",
"TextHAlign": "center",
"TextOpacity": 60,
"TextSize": "regular"
},
{
"Columns": 6,
"Rows": 1,
"BgColor": "#2db9b9",
"BgMediaType": "gif",
"BgMedia": "http://www.url.by/test.gif",
"BgLoop": true,
"ActionType": "open-url",
"ActionBody": "www.tut.by",
"Image": "www.tut.by/img.jpg",
"Text": "<b>Key text</b>",
"TextVAlign": "middle",
"TextHAlign": "center",
"TextOpacity": 60,
"TextSize": "regular"
}
]
}
}Изображение для клавиатуры может быть:
Пример меню чата Viber
Все параметры такие же, как и при отправке обычного текстового сообщения, за исключением клавиатуры param .
Массив кнопок содержит массив кнопок согласно требованию.
Общие параметры клавиатуры:
— Тип : Обязательный. Тип отображения клавиатуры (в настоящее время доступна только «клавиатура»).
— Кнопки : обязательно. Это массив, содержащий все кнопки клавиатуры по порядку.
— BgColor : необязательно. Цвет фона клавиатуры должен быть задан шестнадцатеричным значением.
— DefaultHeight : необязательно. Возможные значения: true или false.
Параметры массива кнопок
Следующие параметры могут быть определены для каждой кнопки в массиве «кнопок» отдельно. Каждая кнопка должна содержать хотя бы один из следующих необязательных параметров: текст, BgMedia, изображение, BgColor.
— Столбцы: ширина кнопки в столбцах. возможные значения 1-6.
— Rows: высота кнопки в строках. возможные значения 1 и 2.
— BgColor: цвет фона для предоставления шестнадцатеричного значения.
— BgMediaType: тип фонового носителя. Возможные значения: картинка или гифка.
— BgMedia: URL-адрес для фонового мультимедиа (изображение или рисунок)
— BgLoop: возможные значения: true или false.
— ActionType: тип действия при нажатии на кнопку. Возможные значения: reply или open-url. reply отправит ответ как обычное сообщение, а open-url откроет ссылку.
— ActionBody: текст для ответа, если ActionType является ответом, и ссылка для открытия, если ActionType имеет открытый URL-адрес.
— Изображение: URL-адрес изображения для размещения поверх фона.
— Текст: текст для отображения в кнопке.
— TextVAlign: вертикальное выравнивание текста. Возможные значения: верх или середина, или снизу.
— TextHAlign: горизонтальное выравнивание текста. Возможные значения: слева или по центру или справа.
— TextOpacity: непрозрачность текста. Возможные значения 1-100.
— TextSize: размер текста. Возможные значения: маленький или обычный или большой.
Текст кнопки может поддерживать некоторые теги HTML:
<b>Text Here</b> Bold
<i>Text Here</i> Italic
<u> Text Here </u> Underline
Line Break
<span style="color: #7f00ff;">X</span> Font ColorПолучение информации об общедоступной учетной записи
Чтобы получить информацию об общедоступной учетной записи, вам нужно вызвать get_account_info api следующим образом:
url: https://chatapi.viber.com/pa/get_account_info
Параметры публикации:
{
"auth_token": "455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8"
}
где auth_token — строка токена, предоставленная Viber при создании публичной учетной записи.
Таким образом, вы можете разработать простой чат-бот для Viber, используя PHP. Более того, это отправная точка для построения сложных ботов. Вы должны попытаться реализовать свои собственные ответы на различные сообщения.
Обновления . Получив множество запросов от читателей, мы расширили чат-бота Viber, добавив в него такие структурные сообщения, как меню клавиатуры, изображения, ссылки и так далее. Пожалуйста, просмотрите статью ниже, чтобы найти живой пример.
Отправка структурированного сообщения и меню клавиатуры в чат-бот Viber
Источник записи: https://thedebuggers.com

