Номер телефона
Для начала следует арендовать виртуальный номер, на который будет “отвечать” бот. Для этого в админке Voximplant в меню “Номера” щелкните “Купить номер телефона”.

На новом экране щелкните поставьте переключатель в позицию “Тестовые номера” – это позволит арендовать виртуальный номер.

Виртуальные номера очень дешевы и позволяют полноценно протестировать любое решение на нашей платформе. Арендуйте номер и далее…
… создайте сценарий
Теперь нам нужен облачный сценарий, сердце нашего решения. Именно он будет принимать звонок, распознавать речь и передавать ее в Dialogflow. На вкладке Сценарии нажмите “Создать сценарий”, дайте ему имя – например, dialogflow – и нажмите “Создать”. Время писать код!
Подключим модуль AI – в нем лежат методы и события для Dialogflow – а также модуль распознавания речи и плеер. Объявим переменные и хитрую функцию wordend, которая принимает на вход количество (пицц) и массив со словами ('маргариту', 'маргариты', 'маргарит') и возвращает слово, подходящее цифре по падежу. Это нужно, чтобы бот не говорил “4 маргарита”, а грамотно выдавал “4 маргариты”.
require(Modules.AI);
require(Modules.ASR);
require(Modules.Player);
let mycall = null,
voice = Language.Premium.US_ENGLISH_FEMALE3,
account_name = "",
dialed_number = "",
caller_id = "",
flow,
lastText = '',
player
function wordend(num, words) {
return words[ ((num=Math.abs(num%100)) > 10 && num < 15 || (num%=10) > 4 || num === 0) + (num !== 1) ];
}
Теперь добавим хендлер для входящего звонка и вспомогательную функцию startASR:
VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => {
mycall = e.call;
mycall.addEventListener(CallEvents.Connected, handleCallConnected);
account_name = e.toURI.substring(e.toURI.indexOf('.') + 1);
account_name = account_name.substring(0, account_name.indexOf('.'));
dialed_number = e.destination;
caller_id = e.callerid;
mycall.answer();
});
function startASR() {
mycall.removeEventListener(CallEvents.PlaybackFinished, startASR);
mycall.sendMediaTo(flow);
}
Когда происходит событие Connected, вызывается функция handleCallConnected. Собственно в ней и происходит весь фарш:
- создается объект Dialogflow;
- синтезированный голос приветствует клиента и предлагает сделать заказ;
- запускается распознавание, клиент делает заказ;
- слова клиента передаются в Dialogflow, происходит слот филлинг;
- синтезированный голос озвучивает заказ и адрес клиента;
- бот кладет трубку, сессия закрывается.
Листинг функции:
Приложение + номер + правило
В нашей телефонии есть понятие “приложения”. Приложение связывает JS-сценарии с арендованными номерами. И даже если сценарий всего один (наш случай), то все равно нужно создать приложение. Для этого на вкладке Приложения нажмите “Создать приложение”, введите имя для нового приложения – dialogflow-app – и нажмите “Создать”.

Теперь перейдите на вкладку “Правила” —> “Добавить правило”. Появится модальное окно с формой. Название можно дать по аналогии – dialogflow-rule. Маску оставьте по умолчанию и самое главное – перетяните слева направо сценарий dialogflow. Нажмите “Добавить”, модальное окно закроется.

Нажмите “Сохранить”. Теперь сценарий знает, на что ему нужно реагировать на любой набранный номер, который вы арендовали. Учитывая, что номер у нас один, это то, что нам нужно.
Чтобы связать номер с приложением, в меню “Номера” нажмите “Мои номера телефонов”.

Назначьте номеру приложение dialogflow-app и правило dialogflow-rule, затем нажмите на галочку. Отлично, теперь наш номер, JS-сценарий и правило связаны и работают сообща.
Агент Dialogflow
В терминах Dialogflow агент – это и есть бот. Мы уже подробно описывали, как создать своего агента и как с ним общаться, но в этот раз мы предлагаем использовать нашу заготовку.
Вам нужно зарегистрироваться на dialogflow.com и создать нового агента. Не забудьте указать русский язык:

По умолчанию агент не знает ни одного высказывания (intents) и вообще ничего не умеет. Скачайте ассеты нашего агента и загрузите их в вашего: для этого в настройках агента перейдите на вкладку “Export and Import” —> “Import from ZIP”.

Теперь у вас есть набор высказываний для заказа пиццы! Можно изучить их в разделе “Intents”; обратите внимание, что у агента есть вспомогательные высказывания pizza.sizehelp и pizza.typehelp. Благодаря им после приветствия пиццерии клиент может спросить “А какие у вас есть пиццы” и бот расскажет, что есть в меню.
Проверьте, что в настройках на вкладке “General” выбрана вторая версия API.

Наконец, скачайте JSON вашего гугловского Service account – это делается в пару кликов.
Привязать агента к приложению Voximplant
В админке Voximplant, в меню “Настройки”, выберите “Dialogflow коннектор”.

Выберите “Добавить Service Accounts”, загрузите JSON и нажмите “Добавить”. Вы увидите, что JSON-файл появился в списке Service Account. Нажмите “Привязать”, выберите приложение dialogflow-app и сохраните.


Готово! Связка Dialoglow + Voximplant настроена, все звенья цепи собраны вместе.
На случай, если вам лень было делать все эти шаги, вы можете пощупать нашу пиццерийную демку:
- заходите по адресу http://demos05.voximplant.com/pizza/;
- вводите номер телефона (для России это будет 7900...) и клацайте “ДАЛЕЕ”;
- c указанного номера наберите +74999384952;
- наслаждайтесь чудо-ботом :)
Комментариев нет:
Отправить комментарий