Боты. Pyrus Help
bots

Боты

Боты — это виртуальные пользователи системы, которых можно назначать ответственными и согласующими в задачах и формах. Каждому боту соответствует программа, выполняющая определенную функцию. Когда заявка приходит к боту, Pyrus вызывает программу, а по окончании ее исполнения сохраняет результаты и передает заявку на следующий этап маршрутизации (или возвращает на один из предыдущих этапов).

Для чего нужны боты

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

  • Когда заявка прошла определенную стадию согласования, например, оплата согласована, она попадает к боту, и заинтересованные участники получают СМС или электронное письмо с уведомлением. После этого в стороннем приложении, например, 1С, автоматически генерируется платежное поручение.
  • Бот проверяет лимит расходов на поставщика и, если лимит превышен, пишет об этом в заявке и возвращает ее на предыдущий этап.
  • Когда заявка на согласование счета к оплате приходит к боту, он запрашивает реестр и анализирует содержимое предыдущих заявок в поисках дубликатов. Если дубликатов счета нет найдено, бот согласовывает заявку и передает ее следующему участнику.

Какую роль бот играет в бизнес-сценарии, зависит от того, как вы его запрограммируете. При этом важно учитывать два ограничения:

  • ответственным в заявке после бота не может быть другой бот (система не позволит вам так сделать);
  • на одном этапе маршрута не могут быть два бота.

Как устроены боты

Бот — это аккаунт в Pyrus специального вида. Его можно создать на вкладке Боты в разделе Управление пользователями. Организация может завести до 100 ботов. Можно делать до 500 вызовов бота за 10 минут. Условия оплаты аккаунта бота те же, что и для других аккаунтов сотрудников.

У каждого бота есть название, которое вы ему даете. В качестве логина генерируется уникальный несуществующий адрес электронной почты, например, bot@892ccfa1c8360e2e8309. Авторизоваться в системе через веб-интерфейс или мобильные приложения, используя логин бота, нельзя. Логин нужен, чтобы можно было получить токен и делать вызовы Pyrus API из-под учетной записи бота.

Для каждого бота нужно написать приложение-обработчик и разместить его на своем сервере. Когда задача попадает во Входящие боту, он отправляет обработчику запрос. После этого приложение срабатывает — отправляет смс-сообщение, письмо или реагирует другим заданным вами образом.

Приведем пример с кодом бота на Python.

import hmac
import hashlib
import json
from flask import Flask
from flask import request

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def index():
    body = request.data
    signature = request.headers['x-pyrus-sig']
    secret = 'This-is-bot-secret-key-VtBOEesdOnIcqGaWQeFkWFqyzgdt2PGsZVWBc8h8H0-xU9ux-dN37IjcAqf2pzeqoo5FqdtoH'

    if _is_signature_correct(body, secret, signature):
        return _prepare_response(body.decode('utf-8'))

def _is_signature_correct(message, secret, signature):
    secret = str.encode(secret)
    digest = hmac.new(secret, msg=message, digestmod=hashlib.sha1).hexdigest()
    return hmac.compare_digest(digest, signature.lower())

def _prepare_response(body):
    task = json.loads(body)["task"]
    task_author = task["author"]["email"]
    return "{{\"text\": \"Hello, {}. This task approved by bot.\", \"approval_choice\": \"approved\"}}".format(task_author)

if __name__ == "__main__":
    app.run("127.0.0.1", 5001) # !!!Не забудьте заменить адрес!!!
Pyrus отправляет HTTPS запрос вашему боту методом POST. На запрос ваш бот должен ответить статусом 2XX в течение 60 секунд после вызова. Если сервер бота недоступен или отвечает любым другим статусом, Pyrus отправит второй запрос через 61 секунду, а затем третий — через 122 секунды. Номер попытки виден в дополнительном заголовке X-Pyrus-Retry запроса. Если за три попытки связаться не удалось, Pyrus отправит новый запрос в следующий раз, когда кто-то прокомментирует задачу.

Для создания и настройки ботов нужно право настраивать интеграции и редактировать справочники в Pyrus.

Была ли эта статья полезной?

Да, спасибо! Нет, остался вопрос