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

Ключ

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

...

С помощью этого бота вы сможете создавать задания на обзвон,

...

добавлятьв них кандидатов, и запускать эти задания.  

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

Перед созданием бота рекомендуем позаботиться о его безопасности.

...

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

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

...

из этой статьи.


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

...

  1. В начале сценария следует создать блок "Вопрос"

...

  1. с текстом "Как будет называться задание на обзвон". И после него блок "Результат"

...

  1. .
    Далее указать следующие настройки стрелки из

...

  1. блока "Вопрос"

...

  1. :
    1. Поставить галочку 
    1. Сохранить ответ

...

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

                                                                                  Image Removed

...

    1. ,
    2. Задать имя переменной "название",
    3. Тип выходных данных Ветка по умолчанию
      Image Added
  1. В следующем блоке "Результат" нужно обозначить обязательные переменные, которые требуются для создания задания на обзвон:

...

  1. Image Added
    Название переменнойЗначение переменной
    task_nameНазвание задания на обзвон, которое вводится пользователем в начале

...

  1. диалога с ботом, в сценарии задаётся через переменную {название}
    cidType

    Определяемый номер

...

  1. (АОН).

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

    • default

...

    • Номер по умолчанию для транка. Используется только при интеграции со сторонней телефонией)
    • gornum

...

    • – Один номер

...

    • pool

...

    • Группа номеров

...

    cidData

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

...

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

    • Если номер один, используется id

...

    • АОНа
      Информация
      titleКак найти айди АОНа

      В личном кабинете перейдите в Телефония CIS Управление номерами и скопируйте айди нужного АОНа из его карточки.

    • Если группа номеров, то используется id группы
      Информация
      titleКак найти айди группы АОНов

      В личном кабинете перейдите в Телефония CIS Пулы CallerId номеров и скопируйте айди нужной группы из её карточки.

    emailЭлектронная почта для входа в личный кабинет
    passwordПароль для входа в личный кабинет
    bot_id

    id сценария, который будет воспроизводиться в звонке

...

  1. Информация
    titleКак найти айди сценария

    В личном кабинете

...

  1. перейдите в Сценарии Сценарии и скопируйте айди нужного сценария из столбца ID.

  2. Далее добавьте 
  1. Запрос к серверу

...

                                                                                                                                                  Image Removed

  1. для авторизации в личном кабинете со следующими параметрами

...

  1. как показано на скриншоте:
        1. Тип авторизации: Отсутствует

      ...

        1. Тип запроса: POST
        2. URL:https://iam.twin24.ai/api/v1/auth/login

      ...

        1. Тип содержимого:  JSON
        2. email

      ...

        1. : {email}
        2. password

      ...

        1. : {password}

      ...

        1. Image Added
      1. Из блока

      ...

      1. запрос к серверу

      ...

      1. укажите две стрелки:

      ...

      1. По умолчанию

      ...

      1. и

      ...

      1. Результат.

      ...

        1. Стрелка По умолчанию идёт в блок информации с

      ...

        1. текстом "Произошла ошибка при получении токена"
        2. Стрелка Результат идет

      ...

        1. в следующий блок "Результат"

      ...

                                                                                                                                             Image Removed

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

          ...

              1. В этой стрелке необходимо присвоить переменной token значение result.token, для записи авторизационного токена в переменную для дальнейшего использования в сценарии
                Image Added
          1. В следующем блоке "Результат" присвойте переменной token1 значение Bearer {token}, для приведения токена к нужному формату для создания задания на обзвон через BPL-выражение в следующем блоке.

                                                                                                                                                       Image Removed

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

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

                                                                                                                                                       Image Removed

          ...

          1. Image Added
          2. Далее добавьте блок "Арифметическая операция" установите тип на "Произвольный тип", и в поле "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 ветки, "Ветка по умолчанию" уходит в блок "Информация" с сообщением об ошибке, во второй ветке задаётся условие:

                                                                                                                                                                   Image Removed

          В условии происходит проверка статус кода ответа от сервера {code} = 200, если запрос был успешным и сервер вернул код 200, то бот перейдёт по этой ветке.

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

                                                                                                                                                            Image Removed

          ...


          1. После этого нажмите кнопку "Преобразовать BPL в AST"
            Информация
            В данном коде выполняется запрос к серверу на создание задания на обзвон. Для формирования такого запроса нужно указать много параметров, которые неудобно указывать через блок запрос к серверу, поэтому используется BPL-выражение с предустановленными значениями, куда переменными подставляются ваши значения из блока результат, установленного в начале сценария.
            Image Added
          2. Далее добавьте блок "Условие", и укажите из него стрелки с типом По умолчанию и И:
            1. Стрелка По умолчанию идёт в блок информации с текстом "Произошла ошибка при создании задания на обзвон"
            2. Стрелка И идет в следующий блок "Арифметическая операция" и имеет условие {code} = 200. Таким образом проверяется на успешность код, который вернуло BPL-выражение
              Image Added
          3. В следующий блок "Арифметическая операция" вставьте следующий код:
            Блок кода
            languagephp
            themeDJango
            titleBPL-выражение
            $id = $response.body.get('id').get('identity')

          ...


          1. После этого нажмите кнопку "Преобразовать BPL в AST"
            Информация

            С помощью этого кода мы записываем в переменную id идентификатор созданного

          ...

          1. задания на обзвон

          ...

          Примечание

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

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

                                                                                                    Image Removed

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

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

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

          ...

          1. , который нам понадобится далее в сценарии.


            Далее добавьте блок "Информация" с текстом "Задание создано! Его айди: {id}. Теперь введите номер кандидата для обзвона"
            Image Added
          2. Далее добавьте блок "Вопрос" для определения номера кандидата на обзвон. Для этого укажите из блока стрелки с типом "Номер телефона" и "Ошибка определения номера телефона": 
            1. Для стрелки Номер телефона укажите параметры как показано на скриншоте И соедините её со следующим блоком "Информация" с текстом "Добавляю кандидата в задание..."
            2. Стрелку Ошибка определения номера телефона соедините со следующим блоком "Информация" с текстом "Ошибка в номере телефона". Далее зациклите фрагмент как показано на скриншоте
              Image Added
          3. Далее добавьте блок "Запрос к серверу" и соедините его с предыдущим блоком "Информация". Далее укажите следующие параметры как показано на скриншоте:
            1. Тип авторизации: Bearer
            2. Значение ключа: {token}

          ...

            1. Тип запроса: POST
            2. URL: https://cis.twin24.ai/api/v1/telephony/autoCallCandidate/batch

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

          ...

            1. Тип содержимого: JSON
            2. batch.0.autoCallId

          ...

            1. : {id}

          ...

            1. batch.0.phone.0

          ...

            1. : 7{number}

          ...


            1. Image Added
          1. Из блока "Запрос к серверу" укажите две стрелки: По умолчанию и Результат.
            1. Стрелка По умолчанию идёт в блок информации с текстом "Произошла ошибка при добавлении кандидата"
            2. Стрелка Результат идет в следующий блок "Информация" с текстом "Кандидат добавлен! Добавить еще одного?"
          2. Далее добавьте блок "Вопрос" и соедините его с предыдущим блоком "Информация". После этого укажите из блока "Вопрос" стрелки с параметрами как на скриншотах ниже
            Подсказка
            Установите остальные блоки в соответствии со скриншотом ниже
            Image Added
            Номер веткиНазвание

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

                                                                                                                  Image Removed

          ...

          1. веткиОписание ветки

            1

          ...

          1. Определение номера

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

          ...

          1. Согласие

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

          ...

          1. ключевых слов, по типу "Да" и других на выбор,

          ...

          1. а также при помощи кнопки с вариантом ответа "Да".

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

          1. 3
          1. Отказ

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

          ...

          1. ключевых слов, по типу "Нет" и других на выбор,

          ...

          1. а также при помощи кнопки с вариантом ответа "Нет"

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

          1. 4
          1. Ветка по умолчанию

          ...

          1. Тип выходных данных: "По умолчанию", уходит в "Пустой блок" и затем в вопрос о старте задания.
          2.  Далее добавьте блок "

          ...

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

          1. Вопрос", соедините его с предыдущим блоком "Информация" как показано на скриншоте. И укажите две стрелки с кнопками аналогично стрелкам на предыдущем шаге.
            1. Стрелка Отказ идет в блок "Информация" с текстом "Запуск отменен"
            2. Стрелка Согласие идет в блок "Арифметическая операция"
              Image Added
          2. Далее для блока "Арифметическая операция" установите настройки согласно скриншоту. И вставьте следующий код в поле BPL-выражение

                                                                                                                              Image Removed                                                       Image Removed

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

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

                                                                                                                                                                                            Image Removed

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

                                                                                                                                                              Image Removed

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

                                                                                                                           Image Removed

          ...

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

            После этого нажмите кнопку "
            Преобразовать BPL в AST"
            Информация
            Этот код необходим для создания секундной задержки перед запуском задания. Чтобы данные успели синхронизироваться

            Image Added
          2. Далее добавьте блок "Запрос к серверу" со следующими настройками:
            1. Тип авторизации: Заголовок
            2. Тип авторизации: Bearer
            3. Значение ключа: {token}
            4. Тип запроса: POST
            5. URL:https://cis.twin24.ai/api/v1/telephony/autoCall/{id}/play

              Image Added
          3.  Готово! Запустите бота в любом мессенджере и проверьте работу сценария. 
            Примечание

          ...

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

          1. titleВнимание!

            Данный бот не будет работать из редактора сценария. Так как в его работе используются BPL-выражения, которые не поддерживаются из редактора. 

            Для тестирования запустите этого бота в любом из чатов 

          Добавление кандидатов в существующее задание на обзвон


          Вместо 5 этапа, создайте блок вопроса и в выходящей из него стрелкеукажите названиепеременной id и поставьте галочку Сохранить ответ

          Image Added

          Далее добавьте

          ...

          блок "Запрос к серверу"

          ...

          со следующими настройками:

          • Тип авторизации: Заголовок
          • Тип авторизации: Bearer
          • Значение ключа: {token}
          • Тип запроса: GET
          • URL: https://cis.twin24.ai/api/v1/telephony/autoCall/{id}

            Так же добавьте выходящий блок информации, где при неверно введённом идентификаторе покажет ошибку, что поможет распознать причину сбоя на этом этапе.

          Image Added
          Затем добавляем стрелку со следующими настройками 
                • Тип: Результат
                • Успешность запроса: Успешно 
                • Код ответа: 200
                • Присвоить переменные при выборе ветки:  status = result.status

          Image Added
          Далее мы добавляем блок с условием и выходящим из него блоком информации в котором вы узнаете, что задание уже запущено.

          Предупреждение

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

          В  выходящей стрелке мы указываем следующие настройки:
                 Тип: Условие "ИЛИ"
                  Условия: {status} = READY (Готово к запуску)
                                 {status} = BLANK (Пустое задание (обзвон не возможен))
                                 {status} = PAUSED (Приостановлено)
                                 

          ...

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

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

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

          Метод: POST

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

          ...

          {status} = DONE (Обзвон завершен)
          Если статус совпадает с условием, то значит в задание можно добавить нового кандидата на обзвон.

          Image Added
          После чего в выходящем блоке информации, мы указываем переменную {status}, чтобы во время добавления нового кандидата, мы могли увидеть статус обзвона.

          Image Added
          После заполнения вы можете возвращаться в 9 этап и следовать его описанию.