Добрый день
в наличии bpmonline, куплен Terrasoft Messaging Service.
Подскажите каким образом осуществляется связь с asterisk.
Насколько я понял Terrasoft Messaging Service осуществляет связь bpmonline по ami . Каким образом осуществляется проброс звонка на ответственного ? (получается нужно при помощи апи и телефона звонящего узнать из bpmonline ответственного и перенаправить звонок ему. Что будет ему карточку всплывашку показывать.???)
Пояснениям , докам , примерам на php ... буду рад. любым подсказкам в какую сторону плыть.
спасибо.
Нравится
sandal пишет:
Литвинко Павел,Спасибо за ответ. Ситуация - звонит клиент , астер принял звонок необходимо направить на ответственного за данный номер ? (по идее надо выдернуть номер ответственного из bpmonline и средствами астера направить на ответственного ). тут же вопросы по как сделать всплывашку для ответственного в bpmonline. Может есть коннектор платный который может перенаправлять на ответственного , показывать всплывашку..... спасибо
Вам нужно делать интеграцию по средствам веб-сервисов с Астериском, где в BPM найдете ответственного, узнаете его номер линии и передадите Астериску, а Астериск на своей стороне уже осуществит перенаправление на нужную линию. Без интеграции никак. Либо давать доступ в БД, для Астериска, чтобы они сами делали запросы в нужные таблицы и искали нужного человека и уже потом распределяли.
Со стороны BPM например сделать табличку, в которую будут записываться Номера линий и их связанные записи, для упрощения поиска Астериску и для уменьшения доступа в БД.
Вы при настройки BPM, выбираете тип интеграции, в вашем случае Asterisk, затем в профиле, вы указываете номер линии пользователя.
На этот номер уже и распределяется звонок. Операторы используют приложение "софтфон", в котором настраивается подключение к Астериску, по этому же номеру линии, через софтфон оператор и разговаривает с клиентами.
Связка с TMS, уже позволяет дублировать звонок в саму BPM. Ответсвенным по звонку соответственно является текущий пользователя софтфона, который указан в настройках BPM
А по поводу переброса на нужного ответственного, это лучше делать на стороне телефонии, чтобы она маршрутизировала на нужный номер сотрудника. Аналогичный, но более простой случай решают тут и тут.
Если в движке телефонии есть возможность запуска скриптов, можно на стороне 7.13 сделать веб-сервис (анонимный или с авторизацией), который по номеру клиента возвращает номер сотрудника, а далее работать с ним.
Литвинко Павел,
Спасибо за ответ. Ситуация - звонит клиент , астер принял звонок необходимо направить на ответственного за данный номер ? (по идее надо выдернуть номер ответственного из bpmonline и средствами астера направить на ответственного ). тут же вопросы по как сделать всплывашку для ответственного в bpmonline. Может есть коннектор платный который может перенаправлять на ответственного , показывать всплывашку..... спасибо
sandal пишет:
Литвинко Павел,Спасибо за ответ. Ситуация - звонит клиент , астер принял звонок необходимо направить на ответственного за данный номер ? (по идее надо выдернуть номер ответственного из bpmonline и средствами астера направить на ответственного ). тут же вопросы по как сделать всплывашку для ответственного в bpmonline. Может есть коннектор платный который может перенаправлять на ответственного , показывать всплывашку..... спасибо
Вам нужно делать интеграцию по средствам веб-сервисов с Астериском, где в BPM найдете ответственного, узнаете его номер линии и передадите Астериску, а Астериск на своей стороне уже осуществит перенаправление на нужную линию. Без интеграции никак. Либо давать доступ в БД, для Астериска, чтобы они сами делали запросы в нужные таблицы и искали нужного человека и уже потом распределяли.
Со стороны BPM например сделать табличку, в которую будут записываться Номера линий и их связанные записи, для упрощения поиска Астериску и для уменьшения доступа в БД.
Литвинко Павел,
авторизация на php проходит. попытка выдернуть номер ответственного не удается. смотрел как https://docs.webitel.com/pages/viewpage.action?pageId=73793602 . на выходе
[3] => {"rowConfig":{"Id":{"dataValueType":0},"Name":{"dataValueType":1},"OwnerLogin":{"dataValueType":1},"Photo":{"dataValueType":16,"isLookup":true,"referenceSchemaName":"SysImage"}},"rows":[{"Name":"-","OwnerLogin":"","Id":"6dbd0b03-fb20-49a6-b3bd-0bb56d5dc8a0","Photo":""}],"notFoundColumns":[],"rowsAffected":1,"nextPrcElReady":false,"success":false}
по идее должен возвращать номер ответственного. но не дает.
в запросе не могу понять куда вставить ( наверное по этому и не возвращает то что надо.)
"exportVariables": { "Contact": "rows.0.Name",
"owner_caller_id_number": "rows.0.OwnerLogin"
}
Может есть примеры общения с апи ?
Вот этот же или очень похожий пример здесь. Нужно смотреть, как отрабатывает этот вебителовский запрос, совместим ли с нынешней версией системы, какие SQL-запросы отправляет в базу и что получает в ответ.
Зверев Александр,
Добрый день. а как это все посмотреть?. все это я пытаюсь запихнуть в curl php.
из примера
{
"httpRequest": {
"exportCookie": "my_cookie",
"url": "https://my.bpmonline.com/ServiceModel/AuthService.svc/Login",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"data": {
"UserName": "Supervisor",
"UserPassword": "Supervisor"
}
}
}
преобразовывается в php curl
$url = "https://bpm.xxxx.com/ServiceModel/AuthService.svc/Login";
$requestData["UserName"] = "xxx";
$requestData["UserPassword"] = "yyy";
echo $jcres = json_encode($requestData);
echo "\n";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $jcres);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jcres))
);
$result = curl_exec($ch);
echo $result;
echo "\n";
curl_close($ch);
авторизация проходит данные куки скидываются в файл. оттуда выдираются и используются в дальнейших запросах.
{
"httpRequest": {
"url": "https://my.bpmonline.com/0/dataservice/json/reply/SelectQuery",
"method": "POST",
"headers": {
"Cookie": "${my_cookie}",
"Accept": "application/json;odata=verbose"
},
"exportVariables": {
"effective_caller_id_name": "rows.0.Name",
"owner_caller_id_number": "rows.0.OwnerLogin"
},
"data": {
"QueryType": 0,
"Columns": {
"Items": {
"Name": {
"OrderDirection": 0,
"OrderPosition": 0,
"Caption": null,
"Expression": {
"ExpressionType": 0,
"ColumnPath": "Name"
}
},
"OwnerLogin": {
"OrderDirection": 0,
"OrderPosition": 0,
"Caption": null,
"Expression": {
"ExpressionType": 0,
"ColumnPath": "[WSysAccount:Contact:Owner].Login"
}
}
}
},
"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": "[ContactCommunication:Contact].SearchNumber"
},
"RightExpression": {
"ExpressionType": 2,
"ColumnPath": null,
"Parameter": {
"DataValueType": 1,
"Value": "${reverted_caller_id_number}"
}
}
}
}
},
"RootSchemaName": "Contact",
"OperationType": 0
}
}
}
вот с этим не понятно что делать ? в "Value": "${reverted_caller_id_number}" мы поместим среверсированый номер телефона.
и в post data вставим "data": и даже что то возвращает запрос.
{"rowConfig":{"Id":{"dataValueType":0},"Name":{"dataValueType":1},"OwnerLogin":{"dataValueType":1},"Photo":{"dataValueType":16,"isLookup":true,"referenceSchemaName":"SysImage"}},"rows":[{"Name":"-","OwnerLogin":"","Id":"6dbd0b03-fb20-49a6-b3bd-0bb56d5dc8a0","Photo":""}],"notFoundColumns":[],"rowsAffected":1,"nextPrcElReady":false,"success":false}
но я не пойму как вставить в запрос
"exportVariables": {
"effective_caller_id_name": "rows.0.Name",
"owner_caller_id_number": "rows.0.OwnerLogin"
},
как вообще дебажить эти запросы??? которые идут как "httpRequest": {
Смотреть и вручную отправлять нужные запросы к веб-сервисам можно при помощи Fiddler. А смотреть, что выбирается при выполнении и какой текст запросов в базу, можно в SQL-профайлере. Учтите, приведенный код предназначен для интеграции с другой телефонией Webitel, а не Asterisk, используемый набор полей в них может отличаться.
Парни вы трезвые тут!!!
Смотрите задача, имея API bpmonline получить скриптом внутренний номер ответственного менеджера который закреплен за номером в bpmonline.
Проблема в том что согласно документации оно 1. Не описано, 2. То что описано на форумах или в манах не работает так как описано.
фраза для какой телефонии оно тут вообще до телефонии не доходит. это просто методы АПИ которые не описаны и которые чтобы получить ответственого - еще не поступило ни одного трезвого ответа.
Есть запрос есть ответ, но в ответе ничего внятного нет, и нету никакого понимания что с этим ответом можно сделать дальше.
Направте пожалуйста в нужное русло. Если вы смотрели АПИ других CRM систем там такое есть могу показать что надо.
Нужное русло для трезвых: разработать веб-сервис в конфигурации, который получает на вход один номер и возвращает другой по нужному заказчику алгоритму, далее из телефонии работать с ним. Либо, если уже нашли подходящий пример работы со стандартным сервисом dataservice, отладить работу с ним в fiddler, убедиться, что в ответ на запрос приходит нужный ответ, затем уже работать с веб-сервисом из телефонии.