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

"
62 ChMikle
 
22.10.20
12:53
я на обед, буду через час в ветке
63 yakutyan_
 
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>
потом посмотрю еще
65 ChMikle
 
22.10.20
13:57
(63) не зарегистрирован :) , может как-то через ватсапп ?
66 ChMikle
 
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, старенький сервер
71 ChMikle
 
22.10.20
14:16
(69) стоит вроде как
72 ChMikle
 
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
два раза энтер
75 ChMikle
 
22.10.20
14:36
(74) а через телнет это как ?
76 ChMikle
 
22.10.20
14:37
писать в командной строке telnet asterip 5038 ?
77 Йохохо
 
22.10.20
14:43
(76) конечно
telnet 172.16.17.254 5038
78 ChMikle
 
22.10.20
14:45
щас попробую , я так понял должен звонок пройти ?
79 Йохохо
 
22.10.20
14:45
(78) да
80 ChMikle
 
22.10.20
14:48
telnet - не является внутренней или внешней командой , исполняемой командой или пакетом.
IP-должен быть внешний или внутренний ?
81 Йохохо
 
22.10.20
15:04
(80) в винде он не установлен по умолчанию, надо включить . адрес любой где слушает астер ами
82 ChMikle
 
22.10.20
15:05
(81) понял , щас админу скажу
83 ChMikle
 
22.10.20
16:19
(81) через телнет идет дозвон :(
84 Йохохо
 
22.10.20
16:21
мб ему 2 ПС в конце надо? ТекстКоманды = ТекстКоманды + ПС + ПС;
85 ChMikle
 
22.10.20
16:22
(84) щас попробую
86 ChMikle
 
22.10.20
16:23
да нет
87 Йохохо
 
22.10.20
16:28
надо искать какой то мелкий косяк, мб подставить хардкодом команды в обработку пока
88 polosov
 
22.10.20
16:29
(85) пробуй в конце ВК+ПС
У нас так.
89 yakutyan_
 
22.10.20
16:36
(65) давай в ватс апе напишу) напиши номер)
90 ChMikle
 
22.10.20
16:46
В общем в телнете дозвон есть , а вот с 1с никуя и в логах пустота
91 ChMikle
 
22.10.20
16:50
(87) я так и делаю :)
92 Йохохо
 
22.10.20
16:53
вторым окном шелл и asterisk -rvvvvvv но там будет жуткое количество спама на рабочем астере
93 Йохохо
 
22.10.20
16:53
обработка чего требует? УТ11?
94 ChMikle
 
22.10.20
16:55
ничего не требует , просто тупо подключает библиотеку и посылает команды , подключиться, логиниться, позвонить
95 Йохохо
 
22.10.20
16:56
давай попробую у меня то шелл есть, yohoiam@mail.ru
96 ChMikle
 
22.10.20
16:58
щас вышлю
97 ChMikle
 
22.10.20
17:06
выслал
98 Йохохо
 
22.10.20
17:42
))))
сейчас почищу свои креденшиалс и верну
99 Йохохо
 
22.10.20
17:48
там 1 ошибка и пара косяков была
100 ChMikle
 
23.10.20
10:34
(99) попробовал , чего-то не работает :(
101 ChMikle
 
23.10.20
10:41
(101) Заработало , спасибо огромное всем кто откликнулся !!!  
ЗЫ не тот IP в первом тесте указал !:))
102 ChMikle
 
23.10.20
10:42
Йохохо хотелось бы отдельно выразить благодарность за отзывчивость !!!!
103 ChMikle
 
23.10.20
10:46
Есть еще пара вопросов в продолжение этой темы . Получается при вызове надо взять трубку от звонящего или в приложении подтвердить звонок , а как-то можно все это приженить через 1С . Т.е. тупо сидит оператор с микрофоном и наушниками , нажимает кнопку позвонить , вызывается команда звонка по телефонному номеру
104 Йохохо
 
23.10.20
11:50
105 ChMikle
 
23.10.20
11:53
(104) записать разговор и потом куда-то сохранить , это должно быть 2 команды ? Что-то типа записать , и потом сохранить куда-то ? где посмотреть параметры , а еще лучше пример использования этих команд ?
106 Йохохо
 
23.10.20
12:28
(105) астер пишет, у меня поверх freepbx и это мышкой настраивается, у вас как админ настроил, в команды астера я не углублялся
107 ChMikle
 
23.10.20
12:33
(106) т.е пишется в астериксе, а можно по каким-то параметрам эту запись из астерикса получить , так получается ?
108 Йохохо
 
23.10.20
12:37
(107) астер вроде не умеет отдавать, надо брать из папки как то
109 ChMikle
 
23.10.20
12:37
(108) он пишет в папку ?
110 Йохохо
 
23.10.20
12:39
(109) /vsr/spool/asterisk/monitor и там год/ме сяц/дата
111 Йохохо
 
23.10.20
12:42
имя примерно такое
exten-Внутренний-Внешний-20201023-114301-1603442556.62.wav
112 ChMikle
 
23.10.20
12:43
(111) понял , пошел ковырять .
ЗЫ еще раз спасибо за помощь :)
113 ChMikle
 
23.10.20
15:35
ИМХО , должна быть команда в астерикс по AMI которая воспроизводила бы запись разговора по ID ?
114 ChMikle
 
23.10.20
15:55
вроде нашел
Функция ЗаписьПрослушать(Знач ИмяФайла="") Экспорт;
    CRLF=Chars.CR+Chars.LF;
    Протокол="SIP/";
    ВнутреннийНомер="902";
    Приоритет="1";
    Таймаут="30000";

    ИмяФайла=СтрЗаменить(ИмяФайла,".gsm","");
    ИмяФайла=СтрЗаменить(ИмяФайла,".wav","");
    Приемник="s";
    Источник=Протокол+ВнутреннийНомер;
    КонтекстЗаписи="1c-playfile";
    ИДНомера="1c-playfile";
    СтрокаПерем="MSG1="+ИмяФайла+",COUNT=1";

    ТекстКоманды="Action: Originate"+CRLF+
    "Channel: "+Источник+CRLF+
    "Context: "+КонтекстЗаписи+CRLF+
    "Exten: "+Приемник+CRLF+
    "Priority: "+Приоритет+CRLF+
    "Callerid: "+ИДНомера+CRLF+
    "Timeout: "+Таймаут+CRLF+
    "Variable: "+СтрокаПерем+CRLF;

    Телефония.ВыполнитьКоманду(ТекстКоманды);

КонецФункции // ЗаписьПрослушать
115 ChMikle
 
23.10.20
16:22
ИмяФайла  указывать весь путь с подкаталогами до записи или только непосредственно имя файла wav ?
116 ChMikle
 
23.10.20
17:53
"Variable: "+СтрокаПерем+CRLF+CRLF; последняя строка в примере должна быть :) . и Все заработало
117 ChMikle
 
23.10.20
17:53
Имя файла - короткое без всего пути
118 ChMikle
 
26.10.20
10:32
подскажите, а как получить имя файла в котором будет храниться запись текущего разговора . VarSet событие , но что-то с синтаксисом отправки не разберусь.
http://wiki.simplit.info/doku.php/solution/operator/mixmonitor
пишут пример как получить , но что-то ругается на синтаксис .

ТекстКоманды= "Event: VarSet"+ПС+
              "Variable: MIXMONITOR_FILENAME"+ПС+
              "Value: /var/spool/asterisk/monitor/1234567890.gsm"+ПС+            
          ТекстКоманды = ТекстКоманды + ПС + ПС;
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
119 Йохохо
 
26.10.20
11:24
(118) это же событие, а не команда
120 ChMikle
 
26.10.20
11:26
(119) а как правильно из библиотеки получить эти данные, я правильно понимаю, что вначале надо выполнить команду Звонок , а потом каким-то образом событие имя файла отработать ?
121 polosov
 
26.10.20
11:27
(118) Мы вытаскиваем имя из БД по callid
122 ChMikle
 
26.10.20
11:29
а что такое БД и пример кода можете выложить ?
123 polosov
 
26.10.20
11:36
(122) Астериск работает на своей базе данных (MySQL как правило). Там хранятся разные параметры, логи и много полезного.
124 ChMikle
 
26.10.20
11:39
(123) а как получить данные-то , как-то событие надо отправить в объект ?
125 polosov
 
26.10.20
11:44
(124) Подключиться к БД (через ADODB, к примеру) и выполнить запрос по таблице cdr
Select * from cdr where callid='ТвойИдентификатор'
126 ChMikle
 
26.10.20
11:45
(125) по идее проще должно быть , астериск возвращает событие , только синтаксис в 1С для библиотеки не могу найти
127 polosov
 
26.10.20
11:49
(126) Вообще у астериск есть Rest-интерфейс. Можно данные тягать так. За подробностями иди в документацию по астериск своей версии.
128 ChMikle
 
26.10.20
11:52
(127) не густо вот что накопал http://wiki.simplit.info/doku.php/solution/operator/mixmonitor , вроде просто все должно быть , а не выходит каменный цветок.
129 Йохохо
 
26.10.20
12:00
я когда то хотел через апач+ https://cwiki.apache.org/confluence/display/HTTPD/DirectoryListings решать проблемы с доступом к файлам, а потом хватило cdr от freepbx
(128) они там не качают файл а проигрывают в локальный номер
130 ChMikle
 
26.10.20
12:05
(129) стремно как-то, да и имя файла как получить ?
131 ChMikle
 
26.10.20
12:05
(129) >> они там не качают файл а проигрывают в локальный номер
ДА мне так и надо.
132 ChMikle
 
26.10.20
12:50
в обработку внешнего события не попадают даннные
133 polosov
 
26.10.20
13:33
(132) В какой конфе ты все делаешь?
134 ChMikle
 
26.10.20
13:57
конфа самописная , добавил на форму обработкувнешнегособытия() на клиенте, если я правильно понял , то если режим фильтрации включить , то 1С будет отлавливать внешние события со стороны Астериск  , высеивая по названию, можно получить имя файла и его расположение.
135 polosov
 
26.10.20
15:03
(134) Не совсем так. Посмотри как это реализовано в типовых. Там есть глобальный обработчик, который оповещает открытые окна.
136 ChMikle
 
26.10.20
15:07
(135) да там вроде как и при описании компоненты пишут в первую очередь срабатывает обработчик на форме , потом уже в глобальный обработчик
137 polosov
 
26.10.20
15:13
(136) Может фильтр не правильный задан. Какой устанавливаешь?
138 ChMikle
 
26.10.20
15:29
я могу обработку выслать , напоковырять , так проще будет
139 Йохохо
 
26.10.20
15:40
требуется разрешение dialplan, но с ним тоже нет ивента с Variable: MIXMONITOR_FILENAME, хотя запись произошла, и вообще имени файла нету
140 ChMikle
 
26.10.20
15:47
(139) dialPlan выставлен в yes для номера , вот где-то рядом решение , почему в обработчик внешнего события не переходит после звонка . я загружаю компоненту, авторизируюсь,звоню,после окончания должен сработать обработчик внешнего события , где будут необходимые данные ?
141 Йохохо
 
26.10.20
15:48
(140) я соединился просто телнетом и сделал звонок который был записан, но события не было
142 ChMikle
 
26.10.20
15:50
может что надо в астериске еще настроить , пишут обмен в формате utf-8
143 ChMikle
 
27.10.20
09:15
UP
144 Йохохо
 
27.10.20
09:26
пора узнать версию астериска)
145 Йохохо
 
27.10.20
09:29
и вообще какая задача решается прослушиванием звонка? мб это можно по другому
146 ChMikle
 
27.10.20
09:34
(144) Asterisk 15.7.4
(145) Когда менеджер поговорил с клиентом , получать полное имя файла и заносить его в реестр сведений , типа журнала звонков. А после при желании , можно на запись в журнале кликнуть , получить обратный звонок на прослушку записи. Блок прослушки записи с командой Астерск уже готов , а вот полное имя файла получать можно через событие описанное выше. делать папку записей звонков как сервер http или шариться по папке перебором файлов как-то стремно :(
147 stopa85
 
27.10.20
09:43
(146) А этот файл с Астериска никак не вытащить? У меня вообще журнал вызовов дублируется в 1С. И записи разговоров хранятся как приложеные файлы. Оч.удобно для RLS и когда у тебя этих серверов astreisk куча. и не только.
148 Йохохо
 
27.10.20
09:44
(146) скриптик написать который принимает внутренний номер и внешний и отдает полный пусть, в имени есть время. вроде делается на netcat + баш. Но вероятно более рационально настроить cdr и оттуда получать ссылку на прослушивание или просто удовлетвориться вебмордой cdr
149 Fedor-1971
 
27.10.20
09:46
(146) Посмотри в консоле Астериска, там будет событие записи в файл, разреши отправлять это событие во внешнюю компоненту
Как вариант, Астериск присваивает ID каждому звонку и, по умолчанию, при записи файла включает его в название
Когда мониторишь звонок выцепи ID, и по маске спокойно получишь файл

На сколько я помню, есть параметр в настройках, что-то типа маска сохраняемого файла
150 Йохохо
 
27.10.20
09:47
(149) нету события, права на него есть а события нет, и гугл говорит что оно было в *11, а в 15 я уже не нашел, но мб плохо искал
151 ChMikle
 
27.10.20
09:55
(149) >>разреши отправлять это событие во внешнюю компоненту
Как это сделать , можно поподробнее ?
(148) угу
(150) м.б. где-то как-то в астериске настраивать регистрировать событие создания файла записи ?
152 ChMikle
 
27.10.20
10:02
(147) это уже на крайний случай , ситуация выглядит так что например : в таблице значений ищут значение перебором строк, вместо того чтобы использовать функцию найти :)
153 Fedor-1971
 
27.10.20
10:03
(151) в одном из файлов настройки Астериска прописываются события для фиксации (Call, answer, busy и т.д. или all - всё что ни попадя), давно игрался, подзабылось уже. Кроме того, внешняя компонента 1С то же настраивалась на all.

Попробуй получить трассу событий из Астериск в 1С, возможно, там получится выцепить запись в файл
154 Йохохо
 
27.10.20
10:07
(153) manager.conf read=dialplan, но события нет
(152) решение polosov рабочее, настраиваем cdr и оттуда тащим через рест апи
155 ChMikle
 
27.10.20
10:08
(153) я правильно понимаю, что после окончания звонка , должно произойти внешнее событие , которое должно перехватить 1С и по наименованию события получить список аргументов (данных) имя файла -один из них. Просто вчера ковырялся , обработка внешнего события не не реагирует : то ли нет событий от астериск , то ли еще что-то ...
156 ChMikle
 
27.10.20
10:09
Но ведь должно же работать :)))
157 Йохохо
 
27.10.20
10:17
я пока так понял, что какая то важная деталь с каналами, и монитор_файлнейм улетает куда то не туда
158 Fedor-1971
 
27.10.20
10:23
(155) типа да. Если нужно что-то получить, это должен отдать Астериск и уметь обработать событие в 1С,
  типа Dialplan - имеет ID звонка (есть нюансы если переключали на другого сотрудника), время начала звонка, время ответа, длительность разговора, время когда трубку положили (это было раньше, что сейчас отдаёт Астериск не скажу).
  Запись в файл была отдельным событием но ID звонка оставался тем же
159 ChMikle
 
27.10.20
10:37
(157) либо какую-то еще опцию надо подключать чтобы возвращала данные после звонка  .
Тут еще проблема в том, что админ который астериском рулит , поверхностно  знает его , атс настроили , ему показали как номер добавить , убрать и все...
160 ChMikle
 
27.10.20
10:39
((158) тут без заморочек, менеджер позвонил из 1С выбрав номер (уже работает с божьей и товарищей по ветке помощью), запись могу прослушать заказав обратно , но вот осталось имя фала получать после звонка (а не перебирать в каталоге) .
161 Йохохо
 
27.10.20
11:11
(159) в консоли или какая то вебморда?
162 ChMikle
 
27.10.20
11:14
(161) кто бы знал , предположение . тут-то все просто http://wiki.simplit.info/doku.php/solution/operator/mixmonitor
163 Йохохо
 
27.10.20
11:21
(162) найдите мануал и поставьте сверху freepbx с cdr
сейчас проверю ключ all
164 Йохохо
 
27.10.20
11:23
Executing [s@macro-hangupcall:3] ExecIf("SIP/1xx-0000028c", "0?Set(CDR(recordingfile)=)") in new stack
это логи, они намекают что с цдр все взлетит)
165 Йохохо
 
27.10.20
11:31
с all тоже ничего полезного, куча мусора
166 ChMikle
 
27.10.20
11:33
(164) Я тут еще одного знакомого попросил подключиться , он вроде тоже с астериском знаком, м.б. все-таки получится ...
Нет , тогда буду разбираться с freepbx с cdr .
ЗЫ ведь в описании-то все работает с получением событий :(
167 Йохохо
 
27.10.20
11:35
(166) Asterisk 11.19.0 нету, мб фрипбх реализует это не через миксмонитор, хз
168 ChMikle
 
27.10.20
11:35
(167) у нас после выполнения команды в телнете никаких событий не происходит :(
169 Йохохо
 
27.10.20
11:36
(168) Events: off - тут офф да?)
Action: Login
Username: admin
Secret: amp111
170 ChMikle
 
27.10.20
11:43
(169) Получилось получать события ?
171 Йохохо
 
27.10.20
11:45
(170) с ивентс он, конечно
172 Йохохо
 
27.10.20
11:45
проверьте cat /etc/asterisk/manager.conf
173 ChMikle
 
27.10.20
11:55
побежал :))
174 ChMikle
 
27.10.20
12:07
(172) а там что проверять ?
175 Йохохо
 
27.10.20
12:10
(174) deny в сетях и права на источники событий
176 ChMikle
 
27.10.20
12:19
(175) никуя не понял , но при авторизации пошли события :) среди них VarSet , только 1С не перехватывает почему-то :((
177 Йохохо
 
27.10.20
12:28
у меня варсеты только не нужные, типа

Event: VarSet
Privilege: dialplan,all
Channel: SIP/1хх -00000002
Variable: MACRO_CONTEXT
Value: from-internal
Uniqueid: 1603787875.2
178 ChMikle
 
27.10.20
12:43
(177) 1603787875.2 - это уникальный идентификатор файла ? правильно ?
179 Йохохо
 
27.10.20
13:01
(178) не файла, а цепочки выполнения вызова
180 ChMikle
 
27.10.20
14:05
(179) типа номер источник- номер получателя - дата звонка- время звонка - 1603787875.2 ?
Внешнее событие не отрабатывает в 1С , где-то в настройках AMI должно быть установлено отправлять события во вне ?
181 Йохохо
 
27.10.20
14:19
(180) добейся устойчивой работы через шелл, а потом уже 1с. АМИ отправляет всё что есть в секции read и что умеет
Uniqueid это идентификатор цепочки, создан канал, запись в лог, событие статуса, звонок бдф хенгап, сквозь все события проходит Uniqueid
сделай себе шел и в астер тоже, а то так и будешь ковыряться в черном ящике, asterisk -rvvv может быть познавательным
182 ChMikle
 
27.10.20
14:28
(181) меня смущает один момент , режим прослушивания у самой компоненты стоит ложь , м.б. поэтому 1С и не ловит внешние события  и  как перевести в истину ?
183 ChMikle
 
27.10.20
14:30
+(182) демонстрационный режим тоже истина
184 ChMikle
 
27.10.20
14:30
а то может я вам мозги ипу , а в деморежиме не поддерживаются какие-то возможности , например чтение событий от астериск
185 ChMikle
 
27.10.20
15:00
(182) поменял после подключения режим прослушивания на значение "истина", но все равно внешнее событие не попадает
186 oslokot
 
27.10.20
15:19
Уважаемые polosov и ChMikle, добрые люди, дайте мне тоже пожалуйста скомпилированный dll, у меня стоит такая же задача интеграции с астериксом Yeastar 300. По Putty к ней подключаюсь и логинюсь нормально (порт 5038) По хорошему, нужно просто брать логи звонков cdr и рекордсы вытаскивать
Помогите пожалуйста!
187 ChMikle
 
27.10.20
15:25
могу дать свою с примером уже подключения и исходящего звонка , библиотека в макете
188 oslokot
 
27.10.20
15:26
(187) спасибо! oslokot собака mail точка ru
189 ChMikle
 
27.10.20
15:27
(188) ловите, если получится события внешние отлавливать , то сюда напишите, а то у меня в этом затык.
190 oslokot
 
27.10.20
15:44
(189) не дошло почемуто
191 polosov
 
27.10.20
15:52
(189) Ты фильтр после подключения устанавливаешь?
192 polosov
 
27.10.20
15:54
(189) .SetRegEx(".*") к примеру
193 oslokot
 
27.10.20
15:59
(189) спасиба! получил
194 ChMikle
 
27.10.20
16:00
(191) да нет , все ловлю , ничего не прилетает :)
195 ChMikle
 
27.10.20
16:04
(193) библиотека в макете
196 polosov
 
27.10.20
16:09
(194) Есче раз говорю, установи фильтр после подключения компоненты.
197 ChMikle
 
27.10.20
16:16
(196) а какой фильтр должен быть ? скинь кусок кода как ты устанавливаешь ? :)
198 polosov
 
27.10.20
16:20
(197) У тебя что-то типа:
Компонента = Новый ("Addin....");
компонента.Connect...
//Тут логины
//Потом установи фильтр
Компонента.SetRegEx(".*");
199 polosov
 
27.10.20
16:24
+(198)
Компонента возвращает событие, если оно подходит под фильтр
        if (std::regex_search(Data2, r))
                {
                    return res;
                }
200 ChMikle
 
27.10.20
16:24
(198) вставил , но что-то нет ничего в обратку :(((
201 ChMikle
 
27.10.20
16:27
я на внешнее событие формы вешаю в тонкомклиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) и по окончанию звонка не переходит в ее тело при отладке
202 oslokot
 
27.10.20
17:00
Ребят, а можно мне макет BROMAsteriskNative скомпилированный под 64 бита? (187) работает, но только под з2
203 ChMikle
 
27.10.20
17:51
(202) 5 сек и вышлю
204 Kabz
 
28.10.20
08:07
И мне скинь плиз. Kabz@mail.ru
205 ChMikle
 
28.10.20
09:21
(204) Тебе что именно ?
206 ChMikle
 
28.10.20
11:25
UP
207 ChMikle
 
28.10.20
11:28
Кому-нибудь могу свою обработку выслать для тестирования перехвата внешних событий от астериска , не перехватывает и все , а в чем проблема( в коде обработки 1С или астериска) после вашего теста станет ясно однозначно. Админ астериска говорит что все открыто , в телнете вроде сообщения о событиях появляются
208 ChMikle
 
28.10.20
14:05
UP
209 Йохохо
 
28.10.20
15:14
(207) старая с моими правками сойдет?
210 ChMikle
 
28.10.20
15:31
(209)                   Port = "5038";
            ОбъектКомпоненты.Connect(IP,Port);
            ОбъектКомпоненты.РежимПрослушивания(Истина); ------- Добавил , была ложь
----------------------------------------------------
                        ТекстКоманды="Events: on"+ПС+
            "Action: login"+ПС+
            "Username: "+user+ПС+
            "Secret: "+password+ПС;
            ТекстКоманды = ТекстКоманды + ПС + ПС;
            Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);        
            
            //ОбъектКомпоненты.SetRegEx(".*");

            ////--------------- звоним ----------------
            // добавил фильтр на события и номер
            СтрокаФильтра="Dial.{1,}?Begin.{1,}?180|Bridge.{1,}?180|Hangup.{1,}?180|MIXMONITOR_FILENAME";
            Флаг = ОбъектКомпоненты.УстановитьРегулярноеВыражение(СтрокаФильтра);
211 ChMikle
 
28.10.20
15:32
+(210) м.б. сама библиотека не получает события ... х.з. кто и как ее собирал
212 Йохохо
 
28.10.20
15:37
(210) вот прям хочется местами поменять коннект и режим)
213 ChMikle
 
28.10.20
15:52
(212) щас сделаем :)
214 ChMikle
 
28.10.20
15:55
(213) так же после звонка в события не попадает :(((
215 Йохохо
 
28.10.20
15:56
я повожусь, потом отпишусь
216 ChMikle
 
28.10.20
15:58
ОбъектКомпоненты.SetRegEx(".*");
тут еще вот советовал Полосов , тоже подставлял , но ничего не получилось
217 ChMikle
 
28.10.20
16:05
.........................
К кому обратишь ты
Пронзительный вопль недотепы?
Ты завоешь в отчаяньи:
— ЙохохО, введи войска!
Спаси меня,  ЙохохО,
ЗЫ перефразировав немного :)))
218 Йохохо
 
28.10.20
16:15
я подольше повожусь, попробую полностью разобраться, а то висит в недоделанных задачка, тикает капает
219 ChMikle
 
28.10.20
16:17
(218) ок
220 ChMikle
 
29.10.20
11:59
UP
221 ChMikle
 
30.10.20
10:47
UP
222 yakutyan_
 
30.10.20
14:10
(221) на чем сейчас затык? получилось внешние событие обрабатывать?
223 yakutyan_
 
30.10.20
14:13
(210) без регулярки поступают события всех телефонных номеров?
224 ChMikle
 
30.10.20
14:17
(222) неа , не ловит , хоть ты тресни. В телнете события выводит онлайн
225 ChMikle
 
30.10.20
14:18
у меня подозрение на саму библиотеку , у себя можешь проверить будет ловить или нет внешние события от атс ?
226 yakutyan_
 
30.10.20
14:18
(224) а без регулярки?
227 yakutyan_
 
30.10.20
14:19
(225) напиши на почту stake1995@mail.ru
228 ChMikle
 
30.10.20
14:22
(227) пишу
229 ChMikle
 
30.10.20
14:28
(228) отправил , проверяй почту
230 ChMikle
 
30.10.20
16:02
(227)  Спасибо за помощь , все получилось !!!
231 ChMikle
 
03.11.20
10:02
Продолжаем разговор. Что имеем : подключение, авторизация , звонок из 1С исходящий, прослушка событий на Астериск , получение имени файла записи разговора , запрос на прослушивание нужной записи с Астериск.
Осталось самое сложное переадресация внешних входящих звонков на нужный внутренний номер .
Т.е. в карточке клиента есть номер клиента и внутренний номер менеджера , т.е. когда звонок от клиента поступает на атс , 1С перехватывает его и перенаправляет на внутренний номер менеджера , параллельно открывая карточку клиента на экране менеджера приглашая его к ответу.
232 ChMikle
 
03.11.20
12:53
Аналогичный функционал есть и в AMI:

Action: Redirect
[ActionID:] value
Channel: value
[ExtraChannel:] value
Exten: value
[ExtraExten:] value
Context: value
[ExtraContext:] value
Priority: value
[ExtraPriority:] value>

Кто-нибудь юзал эту команду , параметры какие должны быть ?
233 ChMikle
 
03.11.20
16:49
заработало , кому интересно . Нужно перехватить канал из события Dial Beggin и его перенаправить на нужный номер
234 ChMikle
 
25.11.20
16:40
Функция ЗаписьПрослушать(Знач ИмяФайла="") Экспорт;
    CRLF=Chars.CR+Chars.LF;
    Протокол="SIP/";
    ВнутреннийНомер="902";
    Приоритет="1";
    Таймаут="30000";

    ИмяФайла=СтрЗаменить(ИмяФайла,".gsm","");
    ИмяФайла=СтрЗаменить(ИмяФайла,".wav","");
    Приемник="s";
    Источник=Протокол+ВнутреннийНомер;
    КонтекстЗаписи="1c-playfile";
    ИДНомера="1c-playfile";
    СтрокаПерем="MSG1="+ИмяФайла+",COUNT=1";

    ТекстКоманды="Action: Originate"+CRLF+
    "Channel: "+Источник+CRLF+
    "Context: "+КонтекстЗаписи+CRLF+
    "Exten: "+Приемник+CRLF+
    "Priority: "+Приоритет+CRLF+
    "Callerid: "+ИДНомера+CRLF+
    "Timeout: "+Таймаут+CRLF+
    "Variable: "+СтрокаПерем+CRLF;

    Телефония.ВыполнитьКоманду(ТекстКоманды);

КонецФункции// ЗаписьПрослушать

не проигрывет файл , хотя выполняется и запускает в Sipfone звонок
235 ChMikle
 
25.11.20
16:40
не проигрывет файл , хотя выполняется и запускает в Sipfone звонок
236 ChMikle
 
25.11.20
17:23
Заработало ,надо все-таки полный путь к записи указывать и ".wav" убирать
237 Kabz
 
26.11.20
12:55
Ну,а пример на почту,тоже хочу покапаться.:)с компонентой?
238 anika79
 
16.12.20
09:59
(20) можно мне тоже скомпилированную dll для 32 и 64 бит? ...начала с этим мучаться... а самой будет весьма сложно собрать..
239 oslokot
 
16.12.20
10:01
Компонента конечно хороша, но все работает только на клиенте. В регзадание не засунешь
240 anika79
 
16.12.20
11:01
(239) Можете скинуть на почту anika79@yandex.ru то, что есть? :) макет 64 бита?
241 oslokot
 
16.12.20
11:10
(240) Отправил вам все что у меня было по данному вопросу.
Мне ранее высылал эти файлы ChMikle

Но повторюсь, компонента мне не подошла т.к. мне нужно было серверное взаимодействие с атс-кой и я решил задачу другим путем
242 anika79
 
16.12.20
11:30
(241) Большое человеческое спасибо! Уже изучаю! Пока у нас идея серверного взаимодействия не стоит, но, если вдруг понадобится,
можно будет позадавать вопросы в рамках этой ветки? :)
243 andryscha1c
 
15.01.21
01:01
(241) (242) всем привет, вам удалось сделать интеграцию 1с с Asterisk? Через внешнюю компоненту?
244 ChMikle
 
15.01.21
09:27
(243) ветку почитай я там выше код выкладывал на исходящие, входящие звонки и прослушку записей разговоров!
245 ДенисЧ
 
15.01.21
09:28
(244) "прослушку записей разговоров"
Так вот кто люппке телефон испортил! )))))
246 ChMikle
 
15.01.21
09:37
(245) наша служба и опасна и трудна ... (с) ;)
247 andryscha1c
 
15.01.21
23:45
(244) а какую именно ты внешнюю компоненту использовал?
248 andryscha1c
 
16.01.21
12:32
(246)   ChMikle, можешь мне пожалуйста скинуть рабочую собранную компоненту и прочие материалы если не сложно? буду благодарен, прочитал ветку понял все шаги, тоже начинаю разбираться и для начала необходимо найти рабочую компоненту и подключить ее.
249 andryscha1c
 
16.01.21
13:27
(23) polosov можете мне собрать пожалуйста и выслать?
250 ChMikle
 
16.01.21
13:51
(248) в понедельник напомни, скину обработку с функциями и библиотеку
251 andryscha1c
 
16.01.21
15:29
(250) Хорошо спасибо большое!
252 andryscha1c
 
01.11.23
04:33
(250) ChMikle напоминаю
253 ChMikle
 
18.01.21
09:49
(252) Выслал , проверяй почту
254 andryscha1c
 
19.01.21
15:34
Ребят, у кого нибудь есть рабочая компонента под 64 битный сервак?