Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Данный бот создаёт задание на обзвон с кандидатами, которых пользователь добавляет через ввод номеров в чат телеграм.

Предупреждение
titleОбратите внимание

Перед созданием бота рекомендуем позаботиться о его безопасности. Поскольку боты в телеграме публичны, незащищённого бота для звонков может использовать кто угодно, в то время как деньги за звонки будут списываться у вас.

Для обеспечения безопасности бота можно воспользоваться методами из этой статьи.


Для создания бота для старта звонков в телеграм нам потребуется выполнить эти шаги:

  1. В начале сценария следует создать блок "Вопрос" и после него блок "Результат". Далее указать следующие настройки стрелки из блока "Вопрос":
    1. поставить галочку "Сохранить ответ",
    2. задать имя переменной "название",
    3. тип выходных данных "Ветка по умолчанию"
Информация

В блоке "Вопрос" будет вопрос о том, какое название будет у задания на обзвон.

       

2)В следующем блоке "Результат" нужно обозначить обязательные переменные, которые требуются для создания задания на обзвон:

 

Название переменнойЗначение переменной
task_nameНазвание задания на обзвон, которое вводится пользователем в начале переписки с ботом, в сценарии задаётся через переменную {название}
cidType

Определяемый номер. (АОН)

Принимает значения:

  • default (По умолчанию для транка)
  • gornum (Один номер)
  • pool (Группа номеров)
cidData

id сущности, выбранной в cidType. 

Актуально для gornum и pool

Если номер один, используется id АОНа, если группа номеров, то используется id группы

emailЭлектронная почта для входа в личный кабинет
passwordПароль для входа в личный кабинет
bot_idid сценария, который будет воспроизводиться в звонке, можно найти в личном кабинете в разделе "сценарии"

3)Далее идёт блок "Запрос к серверу" для авторизации в личном кабинете со следующими параметрами:

                                 

Тип авторизации: Отсутствует

Метод: POST

URL: https://iam.twin24.ai/api/v1/auth/login

Название переменной Значение переменной
email{email}
password{password}
  • Переменные {email} и {password} задаются в прошлом шаге в блоке "Результат".
  • Из блока запроса к серверу выходят две стрелки: "По умолчанию" и "Успешность запроса".
  • "Ветка по умолчанию" идёт в блок информации с сообщением об ошибке.
  • Стрелка с проверкой успешности запроса идёт в следующий блок "Результат", в котором фиксируется ответ сервера.

                     

В переменную token сохраняется значение с токеном для авторизации из ответа сервера.

В следующем блоке "Результат" создаётся новая переменная с названием token1 и значением Bearer {token} для приведения токена к нужному формату для создания задания на обзвон через BPL-выражение в следующем блоке.

                   


3)В следующем блоке арифметики используется BPL-выражение для создания здания на обзвон.

  • Для использования BPL-выражений в блоке арифметики нужно выбрать тип "Произвольный тип" и в поле "BPL-выражение" ввести выражение, затем нажать "преобразовать BPL в AST".

     

Данное выражение нужно скопировать и вставить в блок арифметики в поле "BPL-выражение":

Блок кода
languagephp
themeDJango
titleBPL-выражение
$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-выражение:

Данное выражение нужно скопировать и вставить:

Блок кода
languagephp
themeDJango
titleBPL-выражение
$id = $response.body.get('id').get('identity')

В переменную {id} добавляется идентификатор задания на обзвон в личном кабинете, это значение используется в дальнейшем для добавления кандидатов и для старта задания

Примечание

После ввода текста в поле "BPL-выражение", не забудьте нажать кнопку "Преобразовать BPL в AST"



6)Далее идёт конструкция для определения номера через блок "Вопрос" и ветки от него:

Ветка под номером 1 из блока "Вопрос" идёт с сохранением ответа пользователя и типом выходных данных "Номер телефона". В этой ветке номер сохраняется в переменную number

Ветка номер 2 из блока "Вопрос" идёт в блок "Информация", в котором будет информация о том, что номер введён неверно, затем ветка номер 3 идёт в блок "Информация", в котором будет просьба ввести номер корректно, а затем ветка номер 4 уйдёт обратно в вопрос для определения номера.


7)После определения номера в ветке от предыдущего блока "Вопрос", при помощи блока "Запрос к серверу" происходит добавление кандидата в задание на обзвон

Тело запроса:

Поле запросаЗначение поляОписание поля
batch.0.autoCallId{id}Идентификатор задания на обзвон
batch.0.phone.0{number}Номер кандидата на обзвон


8)После добавления кандидатов, в блоке "Информация" задаётся вопрос: "Хотите добавить ещё кандидатов?", после чего ставится блок "Вопрос", от которого идут следующие ветки:

Наименование веткиОписание ветки
1)Определение номераТип выходных данных: "Номер телефона", ответ пользователя сохраняется в переменную number
2)Согласие

Тип выходных данных: "Ключевые слова", согласие определяется при помощи определения ключевых слов, по типу "Да" и других на выбор, либо при помощи кнопки с вариантом ответа "Да".

При переходе бота по ветке, бот предлагает ввести ещё один номер телефона в блоке "Информация" и возвращается в вопрос для определения номера телефона

3)Отказ

Тип выходных данных: "Ключевые слова", согласие определяется при помощи определения ключевых слов, по типу "Нет" и других на выбор, либо при помощи кнопки с вариантом ответа "Нет"

После отказа бот переходит в блок "Информация" в котором задаётся вопрос, стоит ли запустить задание на обзвон

4)Ветка по умолчаниюВетка по умолчанию уходит в "Пустой блок", ветка из которого уходит в блок "Информация", в котором задаётся вопрос, стоит ли запустить задание на обзвон


                                                                                                                      Настройки ветки с согласием:                                                             Настройки ветки с отказом:

                                                                                                                                                                           



9) Запуск задания на обзвон.

  • Ветка "отказ" и "Ветка по умолчанию" из прошлого блока "Вопрос" соединяются с блоком "Информация", в котором задаётся вопрос "Запустить задание на обзвон?".

  • После этого создаётся блок "Вопрос", ветки от которого по ключевым словам, либо по кнопкам определяют согласие и отказ.

  • Ветка согласия прикрепляется к блоку арифметики, в котором используется BPL-выражение для паузы бота на одну секунду, это необходимо для корректного создания задания.

 

Можно скопировать и использовать данное выражение:

Блок кода
languagephp
themeDJango
titleBPL-выражение
sys.sleep(1_000_000)
Примечание

После ввода текста в поле "BPL-выражение", не забудьте нажать кнопку "Преобразовать BPL в AST"


  • После прошлого блока арифметики создаётся блок "Запрос к серверу" с данными настройками:

     

Тип авторизации: Заголовок

Тип авторизации: Bearer

Значение ключа: {token}

Метод: POST

URL: https://cis.twin24.ai/api/v1/telephony/autoCall/{id}/play


После этого шага бот начинает задание на обзвон.