Создаем бота для Namba One

Регистрируем в панели разработчика

Для входа в панель разработчика используется номер телефона и пароль, указанные при регистрации в приложении Namba One. Панель разработчика: https://dashboard.namba1.co
Переходим во вкладку боты.

Нажимаем кнопку добавить.

Заполняем все поля. Callback URL - указываем url до скрипта-обработчика на сервере

Сохраняем.

Получаем TOKEN для доступа к методам API.

АПИ Сервис находится по адресу: https://api.namba1.co

Программная часть

Взаимодействие между ботом и сервисами Namba One.

При отправке сообщения боту, обновлении статуса сообщения, подключении и отключении бота, серверы Namba One отправляют событие на URL, указанный при добавлении бота в Dashboard. Бот взаимодействует с серверами Namba One, для получения данных, отправляя HTTP запросы на API сервисы.
Создаем Handler

Handler будем писать на php. Он будет обрабатывать события от серверов Namba One.

Сначала рассмотрим структуру события. Она представляет собой JSON объект со следующей структурой:

{ event: [название события], data: [JSON объект] }

Есть 4 типа события:

1. Событие о новом сообщении
Название события: "message/new"

Данные события:
{
  id: [ID сообщения],
  type: [тип сообщения](text/plain - для текстовых сообщений),
  content: [содержание сообщения],
  status: [статус сообщения](1 - сообщение получено, 2 - сообщение прочтено),
  sender_id: [ID отправителя сообщения],
  chat_id: [ID чата]
}
        
2. Событие при изменении статуса сообщения
Название события: "message/update"

Данные события:
Как в событии "message/new"

3. Событие при подписке пользователя (когда пользователь подключает бота)
Название события: "user/follow"

Данные события:
{
  id: [ID пользователя],
  name: [имя пользователя],
  gender: [пол("F" - женский, "M" - мужской, ‘’)],
  birthdate: []
}
        
4. Событие при отписке пользователя (Когда пользователь удаляет бота)
Название события: "user/unfollow"

Данные события:
Как в событии "user/follow"

5. Событие при создания чата с ботом(если чат с ботом удален и пользователь нажимает на бота)
Название события: "new/chat"

Данные события:
{
  chat_id: [id чата],
  user: { Данные как в событии "user/follow" }
}
        
В примере ниже бот будет приветствовать новых пользователей, которые подписались на него.

Методы API, которые будем использовать в нашем примере:

  1. Создание чата с пользователем
  2. URL: /chats/create
    Method: POST
    Данные:
      name - Название чата
      image - Картинка чата (ТОКЕН файла, не multipart) 
      members — [ id пользователя ]
    headers:
      X-Namba-Auth-Token: Токен, выданный при регистрации бота
    
    В случае успешного создания, поле data содержит информацию о чате
                  
  3. Отправка сообщение в чат
  4. URI: /chats/:id/write (где :id - уникальный идентификатор чата)
    Method: POST
    Данные:
      type - тип сообщения(text/plain - для текстовых сообщений)
      content - тело сообщения
    headers:
      X-Namba-Auth-Token: Токен, выданный при регистрации бота
    
    В случае успешной отправки, возвращает поле { success: true }
              
Пишем handler для подписки пользователя. Слать запросы к API будем, используя библиотеку GuzzleHttp.

$ mkdir hellobot
$ cd hellobot
$ touch index.php
$ composer require guzzlehttp/guzzle

Скачать файл:


Что мы сделали?

Создали базовый класс приложения, метод on() добавляет обработчик на определённое событие, присланное с сервера. Инициализировали приложение, добавили обработчик на событие "user/follow", который будет создавать чат с пользователем и отправлять в этот чат сообщение с приветствием.

Заливаем файлы на сервер. Отправляем бота на модерацию в Dashboard (https://dashboard.namba1.co - логин и пароль как в приложении). После успешной модерации бот будет доступен в списке ботов в приложении.