Имя: Пароль:
1C
1С v8
Компонента BROMAsteriskNative для платформы x64
,
0 igrned
 
02.11.21
10:48
Добрый день. Поделитесь рабочей компонентой под платформу x64.
Для x32 есть, работает.
Для x64 есть, но работать отказывается.
Спасибо.
1 DeeK
 
02.11.21
11:08
уже была тут тема, идите на гит там есть исходники, компилите и вуаля
2 igrned
 
02.11.21
11:17
И отсюда брал и на гит. Не взлетает.
с Visual Studio не знаком.
Вот и создал тему.
3 polosov
 
02.11.21
11:46
4 polosov
 
02.11.21
11:46
+ (3) Это с гитхаба, с немного исправленными ошибками.
5 igrned
 
02.11.21
11:55
(4) Ухты, спасибо за оперативное решение. Всё ок!
6 ChMikle
 
02.11.21
12:12
(5) ну вот, а то все мама, да мама (с) :))
7 igrned
 
02.11.21
20:26
(3) Подскажите, вашей компонентой авторизируюсь, всё ок.

    ОбъектКомпоненты = Новый("AddIn.Test.ROM-Asterisk-Native");

    IP = "10.0.0.10";
    Port = "5038";
    
    ОбъектКомпоненты.Connect(IP,Port);
    
    Если ОбъектКомпоненты.Подключено Тогда
        Сообщить("Подключено!");
    Иначе
        Сообщить("Авторизация неуспешна!");
        Возврат;
    КонецЕсли;    

Соединение проходит. Потому что если поменять IP или Порт, то значение "ОбъектКомпоненты.Подключено" = Ложь.

Далее пытаюсь залогинится.
Пишу следующее:

    CRLF = Символы.ВК + Символы.ПС;

    ТекстКоманды =
        "Action: Login"+CRLF+
                "Username: "+user+CRLF+
                "Secret: "+password+CRLF;

    Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);     

Переменная "Флаг" всегда содержит значение "Истина". Даже при неправильном логине/пароле.
Как заставить возвращать нормальный ответ?
8 polosov
 
02.11.21
20:33
Так попробуй:
    ТекстКоманды =
        "Action: Login"+CRLF+
                "Username: "+user+CRLF+
                "Secret: "+password+CRLF+CRLF;
9 igrned
 
02.11.21
20:34
Так тоже пробовал. Все равно всё "Истина".
10 polosov
 
02.11.21
20:42
(9) Этот метод почти всегда возвращает Истина. Пробуй после этого выполнить какую-нибудь команду Астериска
11 igrned
 
02.11.21
21:18
Например?

Вот пробую такую:

ТекстКоманды = "Action: CoreSettings"+CRLF;
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);

Возвращает Истина.

Такую:

ТекстКоманды="Action: Ping"+CRLF;
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);

Тоже Истина.

Даже несуществующую пишу:

ТекстКоманды="Action: TESTTTT"+CRLF;
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);

Все равно Истина)
12 Asmody
 
02.11.21
23:06
(4) а вернуть на гитхаб исправленные ошибки не?
13 igrned
 
03.11.21
11:52
(10) Есть еще мысли, куда посмотреть? У вас компонента работает нормально?
14 polosov
 
03.11.21
11:57
(13) Да, все работает.
Вот так реализован метод "ВыполнитьКоманду": https://ibb.co/mh8bpXC
15 polosov
 
03.11.21
11:57
(13) Версия астериска какая?
16 polosov
 
03.11.21
12:01
(13) + Проверяй настройки AMI
17 polosov
 
03.11.21
12:03
С х32 компонентой как теже самые команды отрабатываются?
18 igrned
 
03.11.21
12:25
(15) Версия Asterisk 16
19 igrned
 
03.11.21
12:30
(17) Проверил, да, оказывается также. Значит дело не в компоненте. А в астериске или чем-то еще...
20 polosov
 
03.11.21
13:20
(19) Компонента дергает внешнее событие 1С. Сделай его на форме и смотри чего она тебе будет слать в сообщениях
21 igrned
 
03.11.21
13:51
(20) Через telnet соединился, авторизировался, отправил команду, в ответ получил нормальную реакцию.
https://ibb.co/mRF9m0s

Во внешнее событие на форме 1С попадает только соединение:
ОбъектКомпоненты.Connect(IP,Port);

Вот что получаю:

Процедура ВнешнееСобытие(Источник, Событие, Данные)
Источник = "ROM-Asterisk-Native";
Событие = "Connected";
Данные = "Server:10.0.0.10 Port:5038";
КонецПроцедуры

Авторизация во внешнее не попадает.
И остальные команды тоже...
22 polosov
 
03.11.21
13:55
(21) После логина сделай Компонента.SetRegex("");
23 igrned
 
03.11.21
14:19
(22)
Метод объекта не обнаружен (SetRegex)
ОбъектКомпоненты.SetRegex("");
24 polosov
 
03.11.21
14:54
(23) SetGegEx попробуй. Чувствительно к регистру чтоль.
25 polosov
 
03.11.21
14:55
(24) *SetRegEx
26 igrned
 
03.11.21
15:20
(25) Да, регистр имел значение.
Но возвращает также "Истина". И во внешнее событие не заходит.
Может быть вы бы смогли найти немного времени и подключится ко мне? Думаю так быстрее решится...
27 polosov
 
03.11.21
15:22
(26) Ну теперь пробуй звонить и смотри события и прочее. Какого рода интеграция нужна? Подключиться не могу.
28 igrned
 
03.11.21
16:28
(27) Нужно при входящем звонке словить кто звонит. Как правильно сделать?
29 polosov
 
03.11.21
16:31
(28) Сейчас при входящем звонке события сыпятся во внешнее событие? Если да, то начинай анализировать их. Если нет - проверяй настройки AMI и/или пробуй установить регулярку типа "."
30 ChMikle
 
03.11.21
16:47
(28) номер получить, по нему искать кто звонит
31 igrned
 
03.11.21
17:13
Блин, я уже не знаю куда смотреть.
Команды же все должны во внешнее событие прилетать? А прилетает только одно. Connect.
Ну и соответственно исходящие/входящие звонки также не прилетают.
Что нужно посмотреть в настройках АМИ?
32 ChMikle
 
03.11.21
17:15
(31) смотри тебе надо кешировать один номер , который должен делать переадресацию после 2-3 звонка . Т.е. 1С должен успеть перехватить входящий звонок до того как астериск перенаправит его на оператора .
33 ChMikle
 
03.11.21
17:15
для того чтобы перехватить и проверить работу сейчас , попроси никого не поднимать трубку на твой входящий звонок
34 polosov
 
03.11.21
17:17
(31) Сделай SetRegEx("Event:.*")
35 polosov
 
03.11.21
17:18
+(34) Может при пустом выражении он ничего не кидает во внешнее событие, не помню уже, а в коде лень смотреть.
36 igrned
 
03.11.21
18:04
Может на видосе чето увидите. Записал экран =)
Там видно, что во внешнее событие не заходит.

https://www.youtube.com/watch?v=x-QDeo07Lq0
37 polosov
 
03.11.21
18:09
(36) Ну вот ты подключился, установил регулярное выражение, теперь позвони на какой-нибудь внутренний номер или на внешний, без разницы и жди лог во внешнем событии. Если при звонке ничего не приходит, то смотри настройки AMI. Тут я не подскажу, гугли.
38 polosov
 
03.11.21
18:11
39 Йохохо
 
03.11.21
18:29
CRLF используется для разделения каждой из строк в пакете и двух последовательностей CRLF (она же \r\n) для того, чтобы обозначить завершение передачи команды в Астериск
40 Йохохо
 
03.11.21
18:29
36 -> 8 !!1
41 igrned
 
03.11.21
19:19
(40) Так тоже пробовал...
https://ibb.co/f4vGQfG
42 Йохохо
 
03.11.21
19:22
(41) напиши формулу срлф
43 Йохохо
 
03.11.21
19:25
CR это ВК, LF это ПС
44 Йохохо
 
03.11.21
19:25
линукс такой линукс
45 Йохохо
 
03.11.21
19:28
и тся ться исправь!
46 igrned
 
03.11.21
19:28
(42) CRLF = Символы.ВК + Символы.ПС;
47 igrned
 
03.11.21
19:28
(44) У меня Windows
48 igrned
 
03.11.21
19:29
(45) Не понял...
49 Йохохо
 
03.11.21
19:40
перехвати отладкой из 1с в текстовый файлик все команды и копипастой сделай через телнет
если у тебя и вправду (8) и (46) код рабочий
возможно из-за отладки ты дожидаешься отлупа по таймауту
50 igrned
 
03.11.21
20:07
Хорошая идея. В отладке скопипастил команду, через телнет вставил, всё ок отрабатывает.

Авторизация:
https://ibb.co/YfFG4d1

CoreSettings:
https://ibb.co/MRVK9Hy

В 1С не работает...
51 Йохохо
 
03.11.21
20:31
ТекстКоманды = "Action: Login"+username;
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
ТекстКоманды = "CR";
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
ТекстКоманды = "LF";
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
.
.
.
.
ТекстКоманды = "CR";
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
ТекстКоманды = "LF";
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
ТекстКоманды = "CR";
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
ТекстКоманды = "LF";
Флаг = ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);

?
52 Йохохо
 
03.11.21
20:37
вместо CR символ сам конечно и я бы попробовал /r/n
53 igrned
 
03.11.21
21:00
Ладно, всем спасибо за участие. На одном и том же месте топчусь. Разместил задачу на платном ресурсе, может хоть так помогут. Если есть желающие, кто тут может/хочет помочь на платной основе, напишите пожалуйста на почту.

[email protected]

Спасибо)
54 igrned
 
04.11.21
09:47
Еще раз привет. Вообщем, решил сам. Если кому интересно, нужно было после авторизации включить режим прослушивания...
И все Eventы приходят во внешнее событие. Спасибо)

    ТекстКоманды =     "Action: login" + CRLF+
                       "Username: " + User + CRLF +
                    "Secret: " + Secret + CRLF + CRLF;

    ОбъектКомпоненты.ВыполнитьКоманду(ТекстКоманды);
    ОбъектКомпоненты.РежимПрослушивания(Истина);
55 ChMikle
 
04.11.21
10:28
Утро вечера мудренее ! Я так понял разобрался ?
56 alexinnnn
 
10.11.21
01:51
(3) Файлы к сожаланию удалились((
Обновите пожалуйста!
57 Shadow_writter
 
09.12.21
16:25
(3) (0) Ребята, поделитесь компонентой, пожалуйста)
58 polosov
 
09.12.21
17:14
59 Shadow_writter
 
10.12.21
09:32
(58) Огромное спасибо!!!
60 alien-n
 
29.12.21
11:06
Всем привет! Прошу поделиться компонентой для 32 и 64 битных платформ
61 desant14
 
03.06.22
10:01
(55) Добрый день! В параллельной ветке (архивной) "1с: Пример интеграции 1С и АТС типа Asterisk штатными средствами 1С / 1С 8" Вы отсылали на почту исходники, всем желающим, там была обработка и компонента, если что-то осталось не могли бы Вы поделиться со мной? Ранее это было все реализовано (до меня), перестало работать, нужно попробовать восстановить, пытаюсь начать с нуля, по шагам в той ветке, но пока не с чего... если можете помочь, пришлите, пожалуйста, на почту [email protected].
62 desant14
 
08.06.22
16:38
(58) Добрый день! не могли бы обновить ссылку, нужна для х64
63 ChMikle
 
08.06.22
20:25
(61) после обеда пришлю
64 ChMikle
 
08.06.22
20:25
Завтра
65 ChMikle
 
10.06.22
10:43
(61) почту давайте, отправлю все что осталось
66 ChMikle
 
10.06.22
10:49
(65) отправил