Интеграция 1С и системы IP телефонии Binotel (Украина)
Скачать файл
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Система IP телефонии Binotel предназначена , в частности, для создания виртуальной АТС и автоматизации учета звонков: http://www.binotel.ua.
У них есть API, но , как всегда, описания пишутся не для постороних, а для тех, кто и так все знает. К тому же все примеры на php. Есть 2 готовых решения для 1С, но они коммерческие.
В обработке реализовано несколько методов для получения информации о звонках, а также для инициации звонка.
Есть еще возможность "поймать" звонок от АТС и вывести пользователю информацию о звонке. Но это надо писать веб-сервис, в отдельной обработке такое не продемонстрируешь.
Обработка для 8.2, поэтому не использованы методы работы с Json и хеширования md5 , которые встроены в 1с 8.3. Вместо этого использована обработка JSON //infostart.ru/public/119601/ (с) Александр Переверзев и функция ВычислитьХешСтрокиПоАлгоритмуMD5 (с) Евгений Тарасенко http://1centerprise8.blogspot.com/2015/02/md5.html
Модуль интеграции с виртуальной телефонией Новофон для решения 1С:Управление нашей фирмой, редакция 3.0.
Обновление релиза в связи с переходом на API 2.0 поставщиком сервиса. Бета-версия 2.0 до окончания перехода поставщиком на новую версию.
Продукт интеграции возможностей Облачной АТС Билайн в систему 1С Предприятие 8.
Звонки прямо из программы 1С, уведомления о текущих звонках, регистрация пропущенных и завершенных вызовов, ведение журнала, анализ данных об использовании мобильной связи.
Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)
(6)
У меня клиент работает на Бинотел. Если бы что-то не работало, они бы меня порвали на 1000 маленьких кусков :)
Прямо сейчас проверил, работает.
Ошибка 403 не имеет отношения к API. Это "доступ запрещен". Либо неправильно ввели, либо перепутали Api Key и Api Secret. Если нет, обратитесь в службу поддержки. support*binotel.ua
(9)
Нужна - сделай :) Как делать ?
1)Договориться с Бинотел, чтобы они посылали на твой IP HTTP запросы по звонкам
2)Написать HTTP сервис в 1с, принимающий от них запрос.
Например, если HTTP сервис называется Binotel, шаблон называется Ino, а метод HTTP сервиса у тебя называется call, то бинотелам нужно написать, чтобы они передавали запросы по адресу :
http://твой IP/Название опубликованной базы/hs/Binotel/call
Формат приходящей строки смотри у бинотелов в описании http://developers.binotel.ua
Вот пример моего метода :
Функция InfoCall(Запрос)
ВходнаяСтрока=Запрос.ПолучитьТелоКакСтроку();
Мас=ПолучитьСоответствие(ВходнаяСтрока);
ТипЗапроса=Мас["requestType"];
Если ТипЗапроса="receivedTheCall" Тогда
Если Мас.Получить("callType")="1" Тогда //исходящий
Перейти ~м1;
КонецЕсли;
ВнутреннийНомер=Мас["internalNumber"];
ВнешнийНомер=Мас["externalNumber"];
Ид=Мас["generalCallID"];
Если Не ПустаяСтрока(ВнутреннийНомер) И НЕ ПустаяСтрока(ВнешнийНомер) И Не ПустаяСтрока(Ид) Тогда
Зап=РегистрыСведений.НеобработанныеЗвонки.СоздатьМенеджерЗаписи();
Зап.ВнутреннийНомер=ВнутреннийНомер;
Зап.ВнешнийНомер=ВнешнийНомер;
Зап.Ид=Ид;
Зап.Записать();
КонецЕсли;
ИначеЕсли ТипЗапроса="answeredTheCall" Тогда
Нз=РегистрыСведений.НеобработанныеЗвонки.СоздатьНаборЗаписей();
Нз.Отбор.ВнешнийНомер.Установить(Мас["externalNumber"]);
Нз.Записать();
ИначеЕсли ТипЗапроса="hangupTheCall" Тогда
Нз=РегистрыСведений.НеобработанныеЗвонки.СоздатьНаборЗаписей();
Нз.Отбор.Ид.Установить(Мас["generalCallID"]);
Нз.Записать();
КонецЕсли;
~м1:
Ответ = Новый HTTPСервисОтвет(200);
Заголовки=Новый Соответствие;
Заголовки.Вставить("Content-Type","text/xml");
Ответ.Заголовки=Заголовки;
Ответ.УстановитьТелоИзСтроки("ok");
Возврат Ответ;
КонецФункции
Функция ПолучитьСоответствие(ВходнаяСтрока)
Рез=Новый Соответствие;
Мас=СтрРазделить(ВходнаяСтрока,"&");
Для Каждого Зн Из Мас Цикл
Позиц=Найти(Зн,"=");
Если Позиц>0 Тогда
Рез.Вставить(Сокрлп(Лев(Зн,Позиц-1)),Сокрлп(Сред(Зн,Позиц+1)));
КонецЕсли;
КонецЦикла;
Возврат Рез;
КонецФункции
Показать
Входящие звонки пишутся в регистр сведений, у нужных пользователей обработчик ожидания отслеживает этот регистр.
(14)100% есть https://api.binotel.com/api/4.0/customers/create.json Но я столкнулся с проблемой авторизации. Написал на бинотел но ответа пока нет. А ситуация более чем странная, запросы типа https://api.binotel.com/api/4.0/customers/list.json )список контактов), или запросы о звонках отрабатывают на ура, все авторизуется и работает, а создание - нет, получаю {"status":"error","code":121,"message":"Your key or secret is wrong"}