...
С помощью этого бота вы сможете создавать задания на обзвон,
...
добавлятьв них кандидатов, и запускать эти задания.
Предупреждение | ||
---|---|---|
| ||
Перед созданием бота рекомендуем позаботиться о его безопасности. |
...
Все боты в телеграме публичны, незащищённого бота для звонков может использовать кто угодно, |
...
в то время как деньги за звонки будут списываться у вас. Для обеспечения безопасности бота можно воспользоваться методами |
...
из этой статьи. |
Для создания бота для старта звонков в телеграм нам потребуется выполнить эти шаги:
...
- В начале сценария следует создать блок "Вопрос
...
- " с текстом "Как будет называться задание на обзвон". И после него блок "Результат"
...
- .
Далее указать следующие настройки стрелки из
...
- блока "Вопрос"
...
- :
- Поставить галочку
- Сохранить ответ
...
- В блоке "Вопрос" будет вопрос о том, какое название будет у задания на обзвон.
...
- ,
- Задать имя переменной "название",
- Тип выходных данных Ветка по умолчанию
- В следующем блоке "Результат" нужно обозначить обязательные переменные, которые требуются для создания задания на обзвон:
...
Название переменной Значение переменной task_name Название задания на обзвон, которое вводится пользователем в начале
...
диалога с ботом, в сценарии задаётся через переменную {название} cidType Определяемый номер
...
(АОН).
Принимает значения:
- default
...
- –Номер по умолчанию для транка. Используется только при интеграции со сторонней телефонией)
- gornum
...
- – Один номер
...
- pool
...
- – Группа номеров
...
cidData id сущности, выбранной в cidType.
...
Актуально для gornum и pool
- Если номер один, используется id
...
- АОНа
Информация title Как найти айди АОНа В личном кабинете перейдите в Телефония CIS – Управление номерами и скопируйте айди нужного АОНа из его карточки.
- Если группа номеров, то используется id группы
Информация title Как найти айди группы АОНов В личном кабинете перейдите в Телефония CIS – Пулы CallerId номеров и скопируйте айди нужной группы из её карточки.
email Электронная почта для входа в личный кабинет password Пароль для входа в личный кабинет bot_id id сценария, который будет воспроизводиться в звонке
- АОНа
...
Информация title Как найти айди сценария В личном кабинете
...
- ⠀
перейдите в Сценарии – Сценарии и скопируйте айди нужного сценария из столбца ID.
- Далее добавьте
- Запрос к серверу
...
- для авторизации в личном кабинете со следующими параметрами как показано на скриншоте:
...
- Тип авторизации: Отсутствует
...
- Тип запроса: POST
- URL:https://iam.twin24.ai/api/v1/auth/login
...
- Тип содержимого: JSON
...
- : {email}
- password
...
- : {password}
- : {password}
...
- Из блока
...
- запрос к серверу
...
- укажите две стрелки:
...
- По умолчанию
...
- и Результат.
- Стрелка По умолчанию идёт в блок информации с
...
- текстом "Произошла ошибка при получении токена"
- Стрелка Результат идет
...
- в следующий блок "Результат"
...
- В
...
- этой стрелке необходимо присвоить переменной token
...
- значение result.token, для записи авторизационного токена в переменную для дальнейшего использования в сценарии
⠀
- значение result.token, для записи авторизационного токена в переменную для дальнейшего использования в сценарии
- В следующем
...
- блоке "Результат"
...
- присвойте переменной token1 значение Bearer {token}
...
- , для приведения токена к нужному формату для создания задания на обзвон через BPL-выражение в следующем блоке.
3)В следующем блоке арифметики используется BPL-выражение для создания здания на обзвон
- Для использования BPL-выражений в блоке арифметики нужно выбрать тип "Произвольный тип" и в поле "BPL-выражение" ввести выражение, затем нажать "преобразовать BPL в AST"
...
- ⠀
- Далее добавьте блок "Арифметическая операция" установите тип на "Произвольный тип", и в поле "BPL-выражение" вставьте следующий код:
Блок кода language php theme DJango title 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-выражение:
...
После этого нажмите кнопку "Преобразовать BPL в AST"
⠀Информация В данном коде выполняется запрос к серверу на создание задания на обзвон. Для формирования такого запроса нужно указать много параметров, которые неудобно указывать через блок запрос к серверу, поэтому используется BPL-выражение с предустановленными значениями, куда переменными подставляются ваши значения из блока результат, установленного в начале сценария. - Далее добавьте блок "Условие", и укажите из него стрелки с типом По умолчанию и И:
- Стрелка По умолчанию идёт в блок информации с текстом "Произошла ошибка при создании задания на обзвон"
- Стрелка И идет в следующий блок "Арифметическая операция" и имеет условие {code} = 200. Таким образом проверяется на успешность код, который вернуло BPL-выражение
⠀
- В следующий блок "Арифметическая операция" вставьте следующий код:
Блок кода language php theme DJango title BPL-выражение $id = $response.body.get('id').get('identity')
...
6)Далее идёт конструкция определения номера через блок "Вопрос" и ветки от него:
Первая ветка из блока "Вопрос" идёт ветка с сохранением ответа пользователя и типом выходных данных "Номер телефона". В этой ветке номер сохраняется в переменную number
Вторая ветка из блока "Вопрос" идёт в блок "Информация", в котором будет информация о том, что номер введён неверно, затем в блок "Информация", в котором будет просьба ввести номер корректно, а затем ветка уйдёт обратно в вопрос для определения номера
7)После определения номера, при помощи блока "Запрос к серверу" происходит добавление кандидата в задание на обзвон
...
После этого нажмите кнопку "Преобразовать BPL в AST"Информация С помощью этого кода мы записываем в переменную id идентификатор созданного задания на обзвон
...
, который нам понадобится далее в сценарии.
Далее добавьте блок "Информация" с текстом "Задание создано! Его айди: {id}. Теперь введите номер кандидата для обзвона"
⠀- Далее добавьте блок "Вопрос" для определения номера кандидата на обзвон. Для этого укажите из блока стрелки с типом "Номер телефона" и "Ошибка определения номера телефона":
- Для стрелки Номер телефона укажите параметры как показано на скриншоте И соедините её со следующим блоком "Информация" с текстом "Добавляю кандидата в задание..."
- Стрелку Ошибка определения номера телефона соедините со следующим блоком "Информация" с текстом "Ошибка в номере телефона". Далее зациклите фрагмент как показано на скриншоте
⠀
- Далее добавьте блок "Запрос к серверу" и соедините его с предыдущим блоком "Информация". Далее укажите следующие параметры как показано на скриншоте:
- Тип авторизации: Bearer
- Значение ключа: {token}
...
- Тип запроса: POST
- URL: https://cis.twin24.ai/api/v1/telephony/autoCallCandidate/batch
Тело запроса:
...
- Тип содержимого: JSON
- batch.0.autoCallId
...
- : {id}
...
- batch.0.phone.0
...
- : 7{number}
...
- Из блока "Запрос к серверу" укажите две стрелки: По умолчанию и Результат.
- Стрелка По умолчанию идёт в блок информации с текстом "Произошла ошибка при добавлении кандидата"
- Стрелка Результат идет в следующий блок "Информация" с текстом "Кандидат добавлен! Добавить еще одного?"
- Далее добавьте блок "Вопрос" и соедините его с предыдущим блоком "Информация". После этого укажите из блока "Вопрос" стрелки с параметрами как на скриншотах ниже
Подсказка Установите остальные блоки в соответствии со скриншотом ниже Номер ветки Название ветки Описание ветки 1
8)После добавления кандидатов, в блоке "Информация" задаётся вопрос: "Хотите добавить ещё кандидатов?", после чего ставится блок "Вопрос", от которого идут следующие ветки:
...
Определение номера
Тип выходных данных: "Номер телефона", ответ пользователя сохраняется в переменную number 2 Согласие Тип выходных данных: "Ключевые слова", согласие определяется при помощи
...
ключевых слов, по типу "Да" и других на выбор,
...
а также при помощи кнопки с вариантом ответа "Да".
...
3 Отказ Тип выходных данных: "Ключевые слова", согласие определяется при помощи
...
ключевых слов, по типу "Нет" и других на выбор,
...
а также при помощи кнопки с вариантом ответа "Нет".
...
4 Ветка по умолчанию
...
Тип выходных данных: "По умолчанию", уходит в "Пустой блок"
...
Настройки ветки с согласием:
Настройки ветки с отказом:
и затем в вопрос о старте задания. - Далее добавьте блок "Вопрос", соедините его с предыдущим блоком "Информация" как показано на скриншоте. И укажите две стрелки с кнопками аналогично стрелкам на предыдущем шаге.
- Стрелка Отказ идет в блок "Информация" с текстом "Запуск отменен"
- Стрелка Согласие идет в блок "Арифметическая операция"
⠀
- Далее для блока "Арифметическая операция" установите настройки согласно скриншоту. И вставьте следующий код в поле BPL-выражение
9) Запуск задания на обзвон.
- Ветка отказа и ветка по умолчанию из прошлого блока "Вопрос" соединяются с блоком "Информация", в котором задаётся вопрос "Запустить задание на обзвон?"
- После этого создаётся блок "Вопрос", ветки от которого по ключевым словам, либо по кнопкам определяют согласие и отказ
- Ветка согласия прикрепляется к блоку арифметики, в котором используется BPL-выражение для паузы бота на одну секунду, это необходимо для корректного создания задания
...
- :
Блок кода language php theme DJango title BPL-выражение sys.sleep(1_000_000)
После
...
- этого нажмите кнопку "Преобразовать BPL в AST"
Информация Этот код необходим для создания секундной задержки перед запуском задания. Чтобы данные успели синхронизироваться
⠀ - Далее добавьте блок "Запрос к серверу"
...
- со следующими настройками:
...
- Тип авторизации: Заголовок
- Тип авторизации: Bearer
- Значение ключа: {token}
...
- Тип запроса: POST
- URL:https://cis.twin24.ai/api/v1/telephony/autoCall/{id}/play
...
⠀
- Готово! Запустите бота в любом мессенджере и проверьте работу сценария.
Примечание title Внимание! Данный бот не будет работать из редактора сценария. Так как в его работе используются BPL-выражения, которые не поддерживаются из редактора.
Для тестирования запустите этого бота в любом из чатов
Добавление кандидатов в существующее задание на обзвон
Вместо 5 этапа, создайте блок вопроса и в выходящей из него стрелкеукажите названиепеременной id и поставьте галочку Сохранить ответ
Далее добавьте блок "Запрос к серверу" со следующими настройками:
- Тип авторизации: Заголовок
- Тип авторизации: Bearer
- Значение ключа: {token}
- Тип запроса: GET
- URL: https://cis.twin24.ai/api/v1/telephony/autoCall/{id}
Так же добавьте выходящий блок информации, где при неверно введённом идентификаторе покажет ошибку, что поможет распознать причину сбоя на этом этапе.
Затем добавляем стрелку со следующими настройками
• Тип: Результат
• Успешность запроса: Успешно
• Код ответа: 200
• Присвоить переменные при выборе ветки: status = result.status
Далее мы добавляем блок с условием и выходящим из него блоком информации в котором вы узнаете, что задание уже запущено.
Предупреждение |
---|
При запущенном задании на обзвон, вы не можете добавлять новых кандидат. |
В выходящей стрелке мы указываем следующие настройки:
Тип: Условие "ИЛИ"
Условия: {status} = READY (Готово к запуску)
{status} = BLANK (Пустое задание (обзвон не возможен))
{status} = PAUSED (Приостановлено)
{status} = DONE (Обзвон завершен)
Если статус совпадает с условием, то значит в задание можно добавить нового кандидата на обзвон.
После чего в выходящем блоке информации, мы указываем переменную {status}, чтобы во время добавления нового кандидата, мы могли увидеть статус обзвона.
После заполнения вы можете возвращаться в 9 этап и следовать его описанию.
...