Вопрос

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

Войдите или зарегистрируйтесь, чтобы комментировать