Почти в каждом внедрение Webitel мы настраиваем создание Активности или Лида в bpm’online при звонке в нерабочее время. Сегодня я решил описать простой механизм создания Лида с помощью веб-службы DataService. Что бы было интересней, мы воспользуемся средствами преобразования текста в голос и распознавания голоса в webitel. Приступаем к реализации!
В справочнике Тип потребности
bpm’online я создам новую запись с названием Заказ обратного звонка:
А в справочнике Каналы Лида
добавлю наш номер, что бы было легче идентифицировать на какой номер звонил клиент:
Теперь перейдем к настройкам маршрутизации в webitel. Наша схема состоит из нескольких блоков.
Блок 1: Авторизация в bpm’online для получения cookies:
{
"httpRequest": {
"exportCookie": "my_cookie",
"url": "https://001509-sales-commerce.bpmonline.com/ServiceModel/AuthService.svc/Login",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"data": {
"UserName": "Администратор",
"UserPassword": "Администратор"
}
}
}
Отправили запрос и сохранили в переменную ответ.
Блок 2: Получение значения идентификаторов новых записей в справочниках bpm’onilne, которые мы создали выше:
{
"httpRequest": {
"url": "https://001509-sales-commerce.bpmonline.com/0/dataservice/json/reply/SelectQuery",
"method": "POST",
"headers": {
"Cookie": "${my_cookie}",
"Accept": "application/json;odata=verbose"
},
"exportVariables": {
"bpmonline_lead_medium_id": "rows.0.Id"
},
"data": {
"QueryType": 0,
"Columns": {
"Items": {
"Id": {
"OrderDirection": 0,
"OrderPosition": 0,
"Caption": null,
"Expression": {
"ExpressionType": 0,
"ColumnPath": "Id"
}
}
}
},
"AllColumns": false,
"IsDistinct": false,
"RowCount": 1,
"Filters": {
"FilterType": 6,
"ComparisonType": 0,
"LogicalOperation": 0,
"IsNull": true,
"IsEnabled": true,
"IsNot": false,
"Items": {
"FilterByPhone": {
"FilterType": 1,
"ComparisonType": 9,
"LogicalOperation": 0,
"IsNull": true,
"IsEnabled": true,
"IsNot": false,
"LeftExpression": {
"ExpressionType": 0,
"ColumnPath": "Name"
},
"RightExpression": {
"ExpressionType": 2,
"ColumnPath": null,
"Parameter": {
"DataValueType": 1,
"Value": "Звонок: 380947116816 "
}
}
}
}
},
"RootSchemaName": "LeadMedium",
"OperationType": 0
}
}
},
{
"httpRequest": {
"url": "https://001509-sales-commerce.bpmonline.com/0/dataservice/json/reply/SelectQuery",
"method": "POST",
"headers": {
"Cookie": "${my_cookie}",
"Accept": "application/json;odata=verbose"
},
"exportVariables": {
"bpmonline_lead_type_id": "rows.0.Id"
},
"data": {
"QueryType": 0,
"Columns": {
"Items": {
"Id": {
"OrderDirection": 0,
"OrderPosition": 0,
"Caption": null,
"Expression": {
"ExpressionType": 0,
"ColumnPath": "Id"
}
}
}
},
"AllColumns": false,
"IsDistinct": false,
"RowCount": 1,
"Filters": {
"FilterType": 6,
"ComparisonType": 0,
"LogicalOperation": 0,
"IsNull": true,
"IsEnabled": true,
"IsNot": false,
"Items": {
"FilterByPhone": {
"FilterType": 1,
"ComparisonType": 9,
"LogicalOperation": 0,
"IsNull": true,
"IsEnabled": true,
"IsNot": false,
"LeftExpression": {
"ExpressionType": 0,
"ColumnPath": "Name"
},
"RightExpression": {
"ExpressionType": 2,
"ColumnPath": null,
"Parameter": {
"DataValueType": 1,
"Value": "Заказ обратного звонка"
}
}
}
}
},
"RootSchemaName": "LeadType",
"OperationType": 0
}
}
}
Блок 3: Преобразования текста в речь, с помощью IVONA
{
"tts": {
"provider": "ivona",
"voice": {
"name": "Tatyana",
"language": "ru-RU",
"gender": "Female"
},
"text": "Что бы заказать обратный звонок , представьтесь после звукового сигнала! Биииип."
}
}
Блок 4: Распознание того, что сказал абонент:
{
"stt": {
"lang": "ru-RU",
"maxSec": 8,
"silenceThresh": 100,
"silenceHits": 2,
"setVar": "STT"
}
}
Блок 5: Создание нового Лида в bpm'online
:
{
"httpRequest": {
"url": "https://001509-sales-commerce.bpmonline.com/0/dataservice/json/reply/InsertQuery",
"method": "POST",
"headers": {
"Cookie": "${my_cookie}",
"Accept": "application/json;odata=verbose"
},
"data": {
"RootSchemaName": "Lead",
"OperationType": 1,
"ColumnValues": {
"Items": {
"LeadType": {
"ExpressionType": 2,
"Parameter": {
"DataValueType": 0,
"Value": "${bpmonline_lead_type_id}"
}
},
"LeadMedium": {
"ExpressionType": 2,
"Parameter": {
"DataValueType": 0,
"Value": "${bpmonline_lead_medium_id}"
}
},
"RegisterMethod": {
"ExpressionType": 2,
"Parameter": {
"DataValueType": 0,
"Value": "d08186b2-b670-4fdf-9596-7654017f9255"
}
},
"Contact": {
"ExpressionType": 2,
"Parameter": {
"DataValueType": 1,
"Value": "${STT}"
}
},
"MobilePhone": {
"ExpressionType": 2,
"Parameter": {
"DataValueType": 1,
"Value": "${caller_id_number}"
}
}
}
}
}
}
}
Как результат, имеем новую запись в разделе Лиды:
А вот и наш канал поступления (номер на который клиент позвонил):
Видео демонстрация, как это все работает вместе:
PS: Пример ACR схемы.