Вопрос

asterisk bpmonline Terrasoft Messaging Service

Добрый день

в наличии bpmonline, куплен Terrasoft Messaging Service.

Подскажите каким образом осуществляется связь  с asterisk.

Насколько я понял Terrasoft Messaging Service осуществляет связь bpmonline по ami . Каким образом осуществляется проброс звонка на ответственного ? (получается нужно при помощи  апи  и телефона звонящего узнать  из bpmonline ответственного и перенаправить звонок ему. Что будет ему карточку всплывашку показывать.???)

Пояснениям , докам , примерам на php ... буду рад. любым подсказкам в какую сторону плыть.

спасибо. 

Нравится

11 комментариев
Лучший ответ

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, убедиться, что в ответ на запрос приходит нужный ответ, затем уже работать с веб-сервисом из телефонии.

Показать все комментарии