Данный бот создаёт задание на обзвон с кандидатами на обзвон, которых пользователь добавляет через ввод номеров в чат телеграм.
Обратите внимание
Перед созданием бота рекомендуем позаботиться о его безопасности. Поскольку боты в телеграме публичны, незащищённого бота для звонков может использовать кто угодно, а деньги за звонки будут списываться у вас.
Для обеспечения безопасности бота можно воспользоваться методами из этой статьи.
Для создания бота для старта звонков в телеграм нам потребуется выполнить эти шаги:
1)Для начала следует создать блок "Вопрос" и после него блок "Результат", поставить в настройках стрелки из блока "Вопрос" тип выходных данных "Ветка по умолчанию" и поставить галочку "Сохранить ответ", а также дать переменной имя название
- В блоке "Вопрос" будет вопрос о том, какое название будет у задания на обзвон.
2)В следующем блоке "Результат" нужно обозначить обязательные переменные, которые требуются для создания задания на обзвон:
Название переменной | Значение переменной |
---|---|
task_name | Название задания на обзвон, которое вводится пользователем в начале переписки с ботом, в сценарии задаётся через переменную {название} |
cidType | Определяемый номер. (АОН) Принимает значения:
|
cidData | id сущности, выбранной в cidType. Актуально для gornum и pool Если номер один, используется id АОНа, если группа номеров, то используется id группы |
Электронная почта для входа в личный кабинет | |
password | Пароль для входа в личный кабинет |
bot_id | id сценария, который будет воспроизводиться в звонке, можно найти в личном кабинете в разделе "сценарии" |
3)Далее идёт блок "Запрос к серверу" для авторизации в личном кабинете со следующими параметрами:
Тип авторизации: Отсутствует
Метод: POST
URL: https://iam.twin24.ai/api/v1/auth/login
Название переменной | Значение переменной |
---|---|
{email} | |
password | {password} |
- Переменные {email} и {password} задаются в прошлом шаге в блоке "Результат"
- Из блока запроса к серверу выходят две стрелки: "По умолчанию" и "Успешность запроса"
- "Ветка по умолчанию" идёт в блок информации с сообщением об ошибке
- Стрелка с проверкой успешности запроса идёт в следующий блок "Результат", в котором фиксируется ответ сервера
В переменную token сохраняется значение с токеном для авторизации из ответа сервера
В следующем блоке "Результат" создаётся новая переменная с названием token1 и значением Bearer {token} для приведения токена к нужному формату для создания задания на обзвон через BPL-выражение в следующем блоке
3)В следующем блоке арифметики используется BPL-выражение для создания здания на обзвон
- Для использования BPL-выражений в блоке арифметики нужно выбрать тип "Произвольный тип" и в поле "BPL-выражение" ввести выражение, затем нажать "преобразовать BPL в AST"
Данное выражение нужно скопировать и вставить в блок арифметики в поле "BPL-выражение":
$json = {"name":$task_name,"defaultExec":"robot","defaultExecData":$bot_id,"secondExec":"end","cidType":$cidType,"cidData":$cidData,"startType":"manual","cps":1.01,"taskComment":$taskComment,"additionalOptions":{"fullListMethod":"reject","fullListTime":0,"useTr":false,"allowCallTimeFrom":0,"allowCallTimeTo":86399,"recordCall":true,"recTrimLeft":0,"detectRobot":false},"redialStrategyOptions":{"redialStrategyEn":false,"busy":{"redial":false,"time":1,"count":1},"noAnswer":{"redial":false,"time":1,"count":1},"answerMash":{"redial":false,"time":1,"count":1},"congestion":{"redial":false,"time":1,"count":1},"answerNoList":{"redial":false,"time":1,"count":1}}} $response = http.request("https://cis.twin24.ai/api/v1/telephony/autoCall", "POST", $json). header("Authorization", $token1).send() $code = $response.statusCode sys.sleep(2_000_000)
После ввода текста в поле "BPL-выражение", не забудьте нажать кнопку "Преобразовать BPL в AST"
4)Далее идёт блок "Условие", от которого отходит 2 ветки, ветка по умолчанию уходит в блок "Информация" с сообщением об ошибке, во второй ветке задаётся условие:
В условии происходит проверка статус кода ответа от сервера {code} = 200, если запрос был успешным и сервер вернул код 200, то бот перейдёт по этой ветке
5)В следующем блоке используется BPL-выражение:
Данное выражение нужно скопировать и вставить:
$id = $response.body.get('id').get('identity')
В переменную {id} добавляется идентификатор задания на обзвон в личном кабинете, это значение используется в дальнейшем для добавления кандидатов и для старта задания
6)Далее идёт конструкция определения номера через блок "Вопрос" и ветки от него:
Первая ветка из блока "Вопрос" идёт ветка с сохранением ответа пользователя и типом выходных данных "Номер телефона". В этой ветке номер сохраняется в переменную number
Вторая ветка из блока "Вопрос" идёт в блок "Информация", в котором будет информация о том, что номер введён неверно, затем в блок "Информация", в котором будет просьба ввести номер корректно, а затем ветка уйдёт обратно в вопрос для определения номера
7)После определения номера, при помощи блока "Запрос к серверу" происходит добавление кандидата в задание на обзвон
- Тип авторизации: Bearer
- Значение ключа: {token}
- Метод: POST
- URL: https://cis.twin24.ai/api/v1/telephony/autoCallCandidate/batch
Тело запроса:
Поле запроса | Значение поля | Описание поля |
---|---|---|
batch.0.autoCallId | {id} | Идентификтор задания на обзвон |
batch.0.phone.0 | {number} | Номер кандидата на обзвон |
8)После добавления кандидатов, в блоке "Информация" задаётся вопрос: "Хотите добавить ещё кандидатов?", после чего ставится блок "Вопрос", от которого идут следующие ветки:
Наименование ветки | Описание ветки |
---|---|
Определение номера | Тип выходных данных: "Номер телефона", ответ пользователя сохраняется в переменную number |
Согласие | Тип выходных данных: "Ключевые слова", согласие определяется при помощи определения ключевых слов, по типу "Да" и других на выбор, либо при помощи кнопки с вариантом ответа "Да". При переходе бота по ветке, бот предлагает ввести ещё один номер телефона в блоке "Информация" и возвращается в вопрос для определения номера телефона |
Отказ | Тип выходных данных: "Ключевые слова", согласие определяется при помощи определения ключевых слов, по типу "Нет" и других на выбор, либо при помощи кнопки с вариантом ответа "Нет". После отказа бот переходит в блок "Информация" в котором задаётся вопрос, стоит ли запустить задание на обзвон |
Ветка по умолчанию | Ветка по умолчанию уходит в "Пустой блок", ветка из которого уходит в блок "Информация", в котором задаётся вопрос, стоит ли запустить задание на обзвон |
Настройки ветки с согласием:
Настройки ветки с отказом:
9) Запуск задания на обзвон.
- Ветка отказа и ветка по умолчанию из прошлого блока "Вопрос" соединяются с блоком "Информация", в котором задаётся вопрос "Запустить задание на обзвон?"
- После этого создаётся блок "Вопрос", ветки от которого по ключевым словам, либо по кнопкам определяют согласие и отказ
- Ветка согласия прикрепляется к блоку арифметики, в котором используется BPL-выражение для паузы бота на одну секунду, это необходимо для корректного создания задания
Можно скопировать и использовать данное выражение:
sys.sleep(1_000_000)
- После прошлого блока арифметики создаётся блок "Запрос к серверу" с данными настройками:
Тип авторизации: Bearer
Значение ключа: {token}
Метод: POST
URL: https://cis.twin24.ai/api/v1/telephony/autoCall/{id}/play
После этого шага бот начинает задание на обзвон