Вход | Регистрация
    1  2  3   
1С:Предприятие :: 1С:Предприятие 8 общая

Пример интеграции 1С и АТС типа Asterisk штатными средствами 1С

Пример интеграции 1С и АТС типа Asterisk штатными средствами 1С
Я
   ChMikle
 
19.10.20 - 15:21
У кого-нибудь есть в свободном доступе что-то типа http://catalog.mista.ru/public/1025458/
Или примеры работы в виде кода ?
   polosov
 
1 - 19.10.20 - 15:53
(0) Вот Native Api  компонента https://github.com/shachneff/BROM-Asterisk-Native , которая умеет слушать события сервера астериск.
На ее основе надо строить всю интеграцию.
   ChMikle
 
2 - 19.10.20 - 15:56
хотелось бы пример на 1С
   polosov
 
3 - 19.10.20 - 15:56
(2) Там есть пример на 1с. Смотри состав файлов
   polosov
 
4 - 19.10.20 - 15:57
+(1)  Ну и не только слушать, но и слать команды серверу.
   Йохохо
 
5 - 19.10.20 - 15:58
в (0) не интеграция, а исключительно анализ логов
   ChMikle
 
6 - 19.10.20 - 16:03
(5) там же можно позвонить и принять звонок , или я неправильно понял ?
   ChMikle
 
7 - 19.10.20 - 16:04
(3) внизу , 2 текстовых файла , я правильно понял ?
   Йохохо
 
8 - 19.10.20 - 16:05
(6) кмк нет, нельзя, там тупо парсят логи. Позвонить то легко, а вот принять без (1) сложно
   polosov
 
9 - 19.10.20 - 16:05
(7) Ну да. Давно бы уже посмотрел их сам.
   ChMikle
 
10 - 19.10.20 - 16:06
(9) уже смотрю :) , спасибо
   ChMikle
 
11 - 19.10.20 - 16:08
только что-то Create УправлениеТелефониейКлиент.txt не открывается
   polosov
 
12 - 19.10.20 - 16:10
(11) Жмакай на имя, а не на Create ))
   ChMikle
 
13 - 19.10.20 - 16:27
(12) душевное спасибо , а вы сами такое делали , в смысле интеграции 1С с астерикс ?
   polosov
 
14 - 19.10.20 - 16:29
(13) Да, всю интеграцию построили на основе этой компоненты.
   ChMikle
 
15 - 19.10.20 - 16:48
(14) если что , могу побеспокоить в рамках этой ветки ?
   polosov
 
16 - 19.10.20 - 16:55
(15) Да, конечно. Подводные камни есть. Но все решено и работает.
   ChMikle
 
17 - 19.10.20 - 17:00
Макет=ПолучитьОбщийМакет("InnovaIT_Asterisk_Native");
это библиотека для работы с Asterisk_Native ?
   polosov
 
18 - 19.10.20 - 17:06
(17) Да, это просто компоненту в общий макет запихнули и берут оттуда.
   ChMikle
 
19 - 19.10.20 - 17:07
(18) а саму компоненту как получить ?
   polosov
 
20 - 19.10.20 - 17:20
(19) Скачать исходники, установить Visual Studio и скомпилировать.
   ChMikle
 
21 - 19.10.20 - 17:20
(20) а у вас нет готовой dll ?
   ChMikle
 
22 - 20.10.20 - 10:14
+(21) >>Скачать исходники, установить Visual Studio и скомпилировать.
У меня, как говорится, ни говна ни ложки. Да собрать ее правильно для меня будет сложно :(
   polosov
 
23 - 20.10.20 - 10:21
(22) Напиши мне на почту. Я скомпилирую тебе. Постараюсь в течение дня. Тебе и 32 и 64 бита?
   polosov
 
24 - 20.10.20 - 10:24
(22) И еще рекомендую подучить регулярные выражения, т.к. фильтр на события задается в синтаксисе библиотеки с++ regex
   polosov
 
25 - 20.10.20 - 10:25
Хотя конечно можно все события получать и на стороне 1С обрабатывать, но там много лишнего.
   ChMikle
 
26 - 20.10.20 - 10:32
(23) можно и ту и ту ? :)
(24) тут хотя бы подключить, для начала :))
   ChMikle
 
27 - 20.10.20 - 10:34
написал , заранее спасибо
   ChMikle
 
28 - 20.10.20 - 15:06
Напомню о себе , так ненавязчиво :)
   polosov
 
29 - 20.10.20 - 16:17
(28) Пролюбил пароль от почты. Продублируй на pol0sov@ya.ru
   ChMikle
 
30 - 20.10.20 - 16:32
написал
 
 Рекламное место пустует
   ChMikle
 
31 - 20.10.20 - 16:43
пошел подключать :) , спасибо
   ChMikle
 
32 - 22.10.20 - 09:26
Дайте пинка в нужном направлении . Поставил компоненту , из тонкого клиента : 1. подключаюсь к базе АТС, 2. Проходу авторизацию 3. Отправляю звонок Originate к себе на мобильный , ошибок нет, команды все последовательно исполняются , а звонок не проходит и в логах астерикс нет регистрации этих событий. Какие-то еще предварительные команды должны быть ? :(
   ChMikle
 
33 - 22.10.20 - 11:27
UP
   polosov
 
34 - 22.10.20 - 11:41
(32) Если нет информации в логах астериска, значит команды до него не доходят. Правильно настроен сервер астериск? Правильный порт указан при подключении?
Плюс от версии к версии астеристка могут меняться форматы команд.
   Йохохо
 
35 - 22.10.20 - 11:43
(32) права проверьте в ами, есть ли права на звонок
   Йохохо
 
36 - 22.10.20 - 11:48
я тестировал через netcat когда баловался, немного неудобно из-за таймаута, но в при определенной сноровке и копи пасте можно сделать ориджинейт из терминала
   ChMikle
 
37 - 22.10.20 - 12:02
(34) да вроде ,да .Команды подключения и авторизации Connect и Action ошибок не выдают.
   ChMikle
 
38 - 22.10.20 - 12:02
(35) а как это сделать ?
   ChMikle
 
39 - 22.10.20 - 12:07
Я другого не пойму , скачал обработку теста RoM-Asteriks подключается библиотека, создается объект , команды отправляются без ошибок . может надо как-то по другому подключаться чтобы позвонить ? я делаю Connect(),login(),Originate(). М.б. еще должна быть какая-то команда промежуточная?
   ChMikle
 
40 - 22.10.20 - 12:09
не должна же тестовая обработка с компонентой не отправлять команды ?
   Йохохо
 
41 - 22.10.20 - 12:11
(38) https://voxlink.ru/kb/book/interfejs-upravlenija-asterisk-ami/
раздел юзер
(39) астер что то отвечает на команду компоненте, проверьте что это OK
   ChMikle
 
42 - 22.10.20 - 12:18
(41) Дык в том-то и дело, что после каждой команды отвечает что все ОК :).
   Йохохо
 
43 - 22.10.20 - 12:20
(42) тексты команд совпадают вплоть до переносов строк в конце?
   stopa85
 
44 - 22.10.20 - 12:22
Нет ли русских букв (43)
   Йохохо
 
45 - 22.10.20 - 12:22
в таких случаях очень помогает шел на хост с *
   ChMikle
 
46 - 22.10.20 - 12:24
(43) вроде да , могу код выложить ...
   ChMikle
 
47 - 22.10.20 - 12:25
(44) да нет вроде
   arsik
 
48 - 22.10.20 - 12:26
Посмотри в астере глубже. Консоль есть?
Ну и у метода Originate много переменных. Может там что то криво.
   Йохохо
 
49 - 22.10.20 - 12:27
(46) можно, но я бы уже качал цигвин
   ChMikle
 
50 - 22.10.20 - 12:31
(48) в астериксе смотрит админ , я там полный нуб , да и он рулит им... ответ об исполнении команды Originate положительный , полагаю если бы ошибка была бы в параметрах - ответ был бы отрицательный.
(49) а что такое цигвин ?
   Йохохо
 
51 - 22.10.20 - 12:32
о что нашел) кат етц астериск манагер.конф
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects=no ;only effects 1.6+

[admin]
secret = amp111
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
writetimeout = 5000
   Йохохо
 
52 - 22.10.20 - 12:33
можешь кинуть ориджинейт свой, попробую стрясти пыль с памяти и проверить
   ChMikle
 
53 - 22.10.20 - 12:38
(52) может лучше обработку пришлю ?
   ChMikle
 
54 - 22.10.20 - 12:39
&НаКлиенте
Процедура ПопробоватьВТонком(Команда)
    
    АдресВнешнейКомпоненты = ПолучитьАдресВнешнейКомпоненты();
    
    ПослеПодключения = Новый ОписаниеОповещения("ОповещениеОПодключенииВнешнихКомпонентПервыйРаз",ЭтаФорма);  
    НачатьПодключениеВнешнейКомпоненты(ПослеПодключения,АдресВнешнейКомпоненты,"ComponentAsterisk",ТипВнешнейКомпоненты.Native);
    
КонецПроцедуры

&НаКлиенте
Процедура ОповещениеОПодключенииВнешнихКомпонентПервыйРаз(Подключено,ДополнительныеДанные) Экспорт
    
ПС = Символы.ВК + Символы.ПС;
    
    Если Подключено Тогда
        
        Попытка
            
            ОбъектКомпоненты = Новый("AddIn.ComponentAsterisk.ROM-Asterisk-Native");
            // ---------- mikle ---------------------- //

            
            // подключимся 

            IP = IP;
            Port = "5038"; 
            ОбъектКомпоненты.Connect(IP,Port); 
            //--------- авторизируемся -----------

            user= "user";
             password =  "Password";
            ТекстКоманды="Action: login"+ПС+
            "Username: "+user+ПС+
            "Secret: "+password+ПС;
    Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);        
        //--------------- звоним ----------------

            //Протокол    = "PJSIP/"; // SIP/,PJSIP/,IAX/, и т.д. - в зависимости от настроект АТС 

            Протокол    = "PJSIP/";// SIP/,PJSIP/,IAX/, и т.д. - в зависимости от настроект АТС 

            Контекст    = "from-internal";// "from-local, from-internal" - в зависимости от настроект АТС

            Приемник = Телприемника;
            Источник = Протокол+"180";// 180 - внутренний номер 

            Контекст = "";
            Таймаут="30000";
            Приоритет="1";
            ЦИД="";
            СтрокаПеременных="";
            КодДоступа=""; 
            КомандаНабора="";
            ДанныеНабора="";
            ФлагАсинхронно="true";
            ИД="";
            
            
            ПС = Символы.ВК + Символы.ПС;
    
    Если ПустаяСтрока(ЦИД) Тогда
        ЦИД = Источник;
    КонецЕсли; 
    
    Если ПустаяСтрока(СтрокаПеременных) Тогда
        СтрокаПерем = "";
    КонецЕсли; 
    
    ТекстКоманды="Action: Originate"+ПС+
    "Channel: "+Источник+ПС+
    "Context: "+Контекст+ПС+
    "Exten: "+Приемник+ПС+
    "Priority: "+Приоритет+ПС+
    "Callerid: "+ЦИД+ПС+
    "Timeout: "+Таймаут+ПС;
        
    //Если НЕ ПустаяСтрока(СтрокаПерем) Тогда

    //    ТекстКоманды = ТекстКоманды + "Variable: "+СтрокаПерем+ПС;

    //КонецЕсли; 

    //

    //Если НЕ ПустаяСтрока(КодДоступа) Тогда

    //    ТекстКоманды = ТекстКоманды + "Account: "+КодДоступа+ПС;

    //КонецЕсли; 

    //

    //Если НЕ ПустаяСтрока(КомандаНабора) Тогда

    //    ТекстКоманды = ТекстКоманды + "Application: "+КомандаНабора+ПС;

    //КонецЕсли; 

    //

    //Если НЕ ПустаяСтрока(ДанныеНабора) Тогда

    //    ТекстКоманды = ТекстКоманды + "Data: "+ДанныеНабора+ПС;

    //КонецЕсли; 

    
    ТекстКоманды = ТекстКоманды + "Async: "+ФлагАсинхронно+ПС;
    
    //Если НЕ ПустаяСтрока(ИД) Тогда

    //    ТекстКоманды = ТекстКоманды + "ActionID: "+ИД+ПС;

    //КонецЕсли; 

    //

    ТекстКоманды = ТекстКоманды + ПС;
    
    Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
    //ОбъектКомпоненты = Новый("AddIn.ComponentAsterisk.ROM-Asterisk-Native-"+ТекстКоманды);            

            
    
          // ---------- mikle ---------------------- //

            
            
            
            Сообщить("Успешное создание Компоненты");
            
        Исключение
            
            РезультатОшибка = ОписаниеОшибки();
            Сообщить(РезультатОшибка);
            
        КонецПопытки;
    Иначе
            
        ПослеУстановки = Новый ОписаниеОповещения("ОповещениеОбУстановкеВнешнихКомпонент",ЭтаФорма);  
        НачатьУстановкуВнешнейКомпоненты(ПослеУстановки,АдресВнешнейКомпоненты);
                
    КонецЕсли; 
    
КонецПроцедуры
   ChMikle
 
55 - 22.10.20 - 12:39
и да , кстати , а номер мобильного телефона 12 значный +7 или 11 8.... ?
   Йохохо
 
56 - 22.10.20 - 12:46
(55) это от других настроек зависит
   Йохохо
 
57 - 22.10.20 - 12:47
(54) вот тут "Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);" поймай пож ТекстКоманды и покажи
   stopa85
 
58 - 22.10.20 - 12:47
[admin]
secret = amp111
deny=0.0.0.0/0.0.0.0

permit=127.0.0.1/255.255.255.0
Дык он у тебя посети доступ запрещен. Там должно быть что-то типа

permit=192,168,1,0/255.255.255.0
   Йохохо
 
59 - 22.10.20 - 12:48
(58) у меня он не используется, просто оказалось что настроен
   ChMikle
 
60 - 22.10.20 - 12:50
(56) так может по этому ошибок нет , а звонок не проходит , я номер 8900.... передавал
 
 Рекламное место пустует
   ChMikle
 
61 - 22.10.20 - 12:52
"Action: Originate
Channel: PJSIP/180
Context:
Exten: 8900*******
Priority: 1
Callerid: PJSIP/180
Timeout: 30000
Async: true

"
   ChMikle
 
62 - 22.10.20 - 12:53
я на обед, буду через час в ветке
   yakutyan_
 
63 - 22.10.20 - 13:06
(62) есть телега? напиши сюда @yakutyan_1, расскажу как реализовал интеграцию с телефонией
   Йохохо
 
64 - 22.10.20 - 13:39
(61) в общем на такой вызов мне прилетает
Event: OriginateResponse
Privilege: call,all
Response: Failure
Channel: хххххххх
Context: from-internal
Exten: хххххххххххххх
Reason: 0// 0 = Номер или екстеншен не найден

Uniqueid: <null>
CallerIDNum: хххххххххх
CallerIDName: <unknown>
потом посмотрю еще
   ChMikle
 
65 - 22.10.20 - 13:57
(63) не зарегистрирован :) , может как-то через ватсапп ?
   ChMikle
 
66 - 22.10.20 - 13:59
(64) 180 номера внутреннего нет , админ накосячил с регистрацией ?
   Йохохо
 
67 - 22.10.20 - 14:04
(66) у меня то своя установка) сейчас попробую, вроде разгребся
   Йохохо
 
68 - 22.10.20 - 14:10
Action: Originate
Channel: SIP/100
Context: from-internal
Exten: 89150000000
Priority: 1
Callerid: 9150000000
Timeout: 30000
Async: true
сработал
   Йохохо
 
69 - 22.10.20 - 14:12
Callerid: PJSIP/180 на Callerid: 900*******
и Context: from-internal у админа спросить есть ли
   Йохохо
 
70 - 22.10.20 - 14:13
PJSIP у меня вместо него SIP, старенький сервер
   ChMikle
 
71 - 22.10.20 - 14:16
(69) стоит вроде как
   ChMikle
 
72 - 22.10.20 - 14:16
SIP тоже ставил , Астерикс 14 версия
   Йохохо
 
73 - 22.10.20 - 14:18
(72) через телнет попробуй, просто ввести все команды
   Йохохо
 
74 - 22.10.20 - 14:19
telnet asterip 5038
первая
Action: Login
Events: off
Username: admin
Secret: amp111
два раза ентер
вторая
Action: Originate
Channel: SIP/100
Context: from-internal
Exten: 89150000000
Priority: 1
Callerid: 9150000000
Timeout: 30000
Async: true
два раза энтер
   ChMikle
 
75 - 22.10.20 - 14:36
(74) а через телнет это как ?
   ChMikle
 
76 - 22.10.20 - 14:37
писать в командной строке telnet asterip 5038 ?
   Йохохо
 
77 - 22.10.20 - 14:43
(76) конечно
telnet 172.16.17.254 5038
   ChMikle
 
78 - 22.10.20 - 14:45
щас попробую , я так понял должен звонок пройти ?
   Йохохо
 
79 - 22.10.20 - 14:45
(78) да
   ChMikle
 
80 - 22.10.20 - 14:48
telnet - не является внутренней или внешней командой , исполняемой командой или пакетом.
IP-должен быть внешний или внутренний ?
   Йохохо
 
81 - 22.10.20 - 15:04
(80) в винде он не установлен по умолчанию, надо включить . адрес любой где слушает астер ами
   ChMikle
 
82 - 22.10.20 - 15:05
(81) понял , щас админу скажу
   ChMikle
 
83 - 22.10.20 - 16:19
(81) через телнет идет дозвон :(
   Йохохо
 
84 - 22.10.20 - 16:21
мб ему 2 ПС в конце надо? ТекстКоманды = ТекстКоманды + ПС + ПС;
   ChMikle
 
85 - 22.10.20 - 16:22
(84) щас попробую
   ChMikle
 
86 - 22.10.20 - 16:23
да нет
   Йохохо
 
87 - 22.10.20 - 16:28
надо искать какой то мелкий косяк, мб подставить хардкодом команды в обработку пока
   polosov
 
88 - 22.10.20 - 16:29
(85) пробуй в конце ВК+ПС
У нас так.
   yakutyan_
 
89 - 22.10.20 - 16:36
(65) давай в ватс апе напишу) напиши номер)
   ChMikle
 
90 - 22.10.20 - 16:46
В общем в телнете дозвон есть , а вот с 1с никуя и в логах пустота
   ChMikle
 
91 - 22.10.20 - 16:50
(87) я так и делаю :)
   Йохохо
 
92 - 22.10.20 - 16:53
вторым окном шелл и asterisk -rvvvvvv но там будет жуткое количество спама на рабочем астере
   Йохохо
 
93 - 22.10.20 - 16:53
обработка чего требует? УТ11?
   ChMikle
 
94 - 22.10.20 - 16:55
ничего не требует , просто тупо подключает библиотеку и посылает команды , подключиться, логиниться, позвонить
   Йохохо
 
95 - 22.10.20 - 16:56
давай попробую у меня то шелл есть, yohoiam@mail.ru
   ChMikle
 
96 - 22.10.20 - 16:58
щас вышлю
   ChMikle
 
97 - 22.10.20 - 17:06
выслал
   Йохохо
 
98 - 22.10.20 - 17:42
))))
сейчас почищу свои креденшиалс и верну
   Йохохо
 
99 - 22.10.20 - 17:48
там 1 ошибка и пара косяков была
   ChMikle
 
100 - 23.10.20 - 10:34
(99) попробовал , чего-то не работает :(
  1  2  3   

Список тем форума
Рекламное место пустует  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.