Страница 1 из 1

Не работает команда в CLI, а в списке команд она есть

Добавлено: 27 ноя 2013, 19:50
maxmen77
manager show commands показывает что команда JabberSend есть, но выполнять ее не хочет, синтаксис вроде правильный. Подробнее:
Не получается отправлять сообщения из астера в Jabber, в логах астера ничего о попытках отправки тоже нет.... Если включить отладку XMPP, то в консоли попыток отправки сообщения в jabber тоже не видно.
Модуль xmpp в фстер загружен

Код: Выделить всё

CLI> module load res_xmpp.so
Loaded res_xmpp.so
  == Parsing '/etc/asterisk/xmpp.conf': Found
  == Manager registered action JabberSend
  == Registered application 'JabberSend'
  == Registered application 'JabberSendGroup'
  == Registered application 'JabberStatus'
  == Registered application 'JabberJoin'
  == Registered application 'JabberLeave'
  == Registered custom function 'JABBER_STATUS'
  == Registered custom function 'JABBER_RECEIVE'
    -- Message technology handler 'xmpp' registered.
 Loaded res_xmpp.so => (Asterisk XMPP Interface)
Астер к жабберу подключен - 146% - входящие по jabber сообщения в консоли астера появляются. Т.е. xmpp.conf настроен правильно.
Т.е. поступающие сообщения он (астер) видит, но сам не отправляет.

Код: Выделить всё

*CLI> xmpp show buddies
показывает всех пользователей ростера
*

Код: Выделить всё

CLI> xmpp show connections
Jabber Users and their status:
       [asterisk] 6000@krdserver.crm     - Connected
что также говорит что пользователь, которому пытаюсь из астера отправить сообщение, тоже подключен и астеру это известно
При попытке отправить сообщение в Jabber из CLI "

Код: Выделить всё

JabberSend(6000@krdserver.crm,6001@krdserver.crm,Test message from aster to jabber)
"пишет

Код: Выделить всё

No such command 'JabberSend

И при всем этом:

Код: Выделить всё

*CLI> manager show commands
 JabberSend       system,all       Sends a message to a Jabber Client.
Т.е. он гад эту команду знает

Код: Выделить всё

*CLI> manager show command JabberSend
[Syntax]
Action: JabberSend
[spoiler=][ActionID:] <value>
Jabber: <value>
JID: <value>
Message: <value>
[Synopsis]
Sends a message to a Jabber Client.
[Description]
Sends a message to a Jabber Client.
[Arguments]
ActionID
    ActionID for this transaction. Will be returned.
Jabber
    Client or transport Asterisk uses to connect to JABBER.
JID
    XMPP/Jabber JID (Name) of recipient.
Message[/spoiler]
    Message to be sent to the buddy.
И знает ее синтаксис (я его тоже знаю, пробовал на другом астере (экспериментальном, версия 10) тоже самое настроить - работает как часы (экспериментировал с отправкой пришедших в донгл СМКок и USSD-запросов себе в jabber - даже кириллица проходит чудесно).

Кто знает куда копать??? Мне кажется, астер тупо не понимает команды, которую выдает в списке своих возможных команд.
Может, в версии 11 есть какие-то изменения в работе этого модуля (кроме того что раньше он назывался res_jabber.so, а теперь стал res_xmpp.so)???
Как лечить??? Кто-нить смог подружить эту версию астера с jabber?
P.S.

Код: Выделить всё

# asterisk -V
Asterisk 11.5.1

Код: Выделить всё

]# uname -a
Linux krdserver.crm 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 27 ноя 2013, 19:53
ded
Нет такой команды из CLI, а вот аппликация (которую можно вставить в диал-план) есть:
CLI> core show application JabberSend
el-01*CLI> core show application JabberSend

-= Info about application 'JabberSend' =-

[Synopsis]
Sends an XMPP message to a buddy.

[Description]
Sends the content of <message> as text message from the given <account> to
the buddy identified by <jid>
Example: JabberSend(asterisk,bob@domain.com,Hello world) sends "Hello world"
to <bob@domain.com> as an XMPP message from the account <asterisk>, configured
in jabber.conf.

[Syntax]
JabberSend(account,jid,message)

[Arguments]
account
The local named account to listen on (specified in jabber.conf)
jid
Jabber ID of the buddy to send the message to. It can be a bare JID
(username@domain) or a full JID (username@domain/resource).
message
The message to send.

[See Also]
JABBER_STATUS, JABBER_RECEIVE
maxmen77 писал(а): Мне кажется, астер тупо не понимает команды, которую выдает в списке своих возможных команд.
Мне кажется прежде чем писать слово ТУПО по отношению к Астериску, следует сделать паузу, посмотреть в зеркало и почитать книжку про Астериск.
Не повредит.

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 28 ноя 2013, 11:23
maxmen77
DED, я не занимаюсь настройкой астериска постоянно, а делаю это по мере необходимости, поэтому и познания не так глубоки и я не отличаю аппликацию (скорее, приложение) от команды.
Чем отличается аппликация от команды и как можно проверить работоспособность аппликации из консоли вручную???
На всякий случай кусок extensions_custom.conf, который отвечает за отправку входящих СМС и USSD в джаббер и на другой машине работает (экспериментальная, на ней астер 10).

Код: Выделить всё

[from-gsm]
; Заменяем 7 на 8 в определившихся номерах и делаем DID равный номеру
; IMEI модема, для входящих разделения звонков с разных модемов.
exten => s,1,Set(CALLERID(all)=${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=8${CALLERID(num):2})
exten => s,n,goto(from-trunk,${DONGLEIMEI},1)

; Отправляем входящие SMS в jabber 6000@server - jabber аккаунт отправителя из /etc/asterisk/xmpp.conf, 6001@server - jabber аккаунт получателя
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)} - SMS  - ${DONGLENAME} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}' >> /var/log/asterisk/sms.txt)
exten => sms,n,JabberSend(6000@krdserver.crm,6001@krdserver.crm, ${DONGLENAME} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}.)
exten => sms,n,Hangup()

; Отправляем входящие USSD в jabber
exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)} - USSD - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,JabberSend(6000@krdserver.crm,6001@krdserver.crm/Office, ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}.)
exten => ussd,n,Hangup()
Вот лог USSD запроса, ответ на который должен уйти в Jabber

Код: Выделить всё

[code]*CLI> dongle ussd dongle0 *100#
[dongle0] USSD queued for send with id 0x7f5ed800b1b0
    -- [dongle0] Successfully sent USSD 0x7f5ed800b1b0
 [dongle0] Got USSD type 0 'USSD Notify': '7160,60 руб. '
    -- Executing [ussd@from-gsm:1] Verbose("Local/ussd@from-gsm-00000000;1", "Incoming USSD: 7160,60 руб. ") in new stack 60 руб.
    -- Executing [ussd@from-gsm:2] System("Local/ussd@from-gsm-00000000;1", "echo '28.11.2013 11:30:38 - USSD - dongle0: 7160,60 руб. ' >> /var/log/asterisk/ussd.txt") in new stack
    -- Executing [ussd@from-gsm:3] JabberSend("Local/ussd@from-gsm-00000000;1", "6000@krdserver.crm,6001@krdserver.crm, dongle0: 7160,60 руб. .") in new stack
  == Spawn extension (from-gsm, ussd, 3) exited non-zero on 'Local/ussd@from-gsm-00000000;1'
krdserver*CLI>

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 28 ноя 2013, 11:59
virus_net
maxmen77 писал(а): я не занимаюсь настройкой астериска постоянно, а делаю это по мере необходимости
и это отменяет чтение технической литературы ?
maxmen77 писал(а):поэтому и познания не так глубоки
так подтяни их
maxmen77 писал(а):Чем отличается аппликация от команды и как можно проверить работоспособность аппликации из консоли вручную???
прочти книжку, полистай http://www.voip-info.org/ - ответь на свой же вопрос самостоятельно

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 28 ноя 2013, 12:15
maxmen77
virus_net, еще предложи погуглить свой вопрос. Если нечего сказать по теме и не знаешь решения - лучше помолчать. Если предлагаешь что-то почитать, дай ссылку на конкретную тему или раздел, после прочтения которых проблема станет понятна или хотя бы обозначится путь для ее решения.
Ссылки которые предлагаете, уже прочитаны, но ответа на свои вопросы там я так и не нашел. Скорее, не там искал или не заметил. Если Вы уже знаете решение или понимаете - скажите куда копать, если нет - читайте выше.
Я сюда пришел за советом к специалистам, а не за общими предложениями. Если есть что конкретно предложить - предлагайте. Специализированные форумы вроде этого и придуманы для того, чтобы люди могли обсуждать темы и задавать вопросы.

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 28 ноя 2013, 12:21
maxmen77
Всем спасибо, проблему помогли решить добрые люди.
Для тех кто столкнется - в таком варианте как у меня, оно работоспособно в астериске вресии 10, но похоже, что в 11 уже поменяли и надо указывать название секции из xmpp.conf, а не JID как раньше.
Было

Код: Выделить всё

JabberSend(asterisk,6001@krdserver.crm, ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}.)
Стало

Код: Выделить всё

JabberSend(asterisk, ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}.)

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 28 ноя 2013, 12:54
maxmen77
Ошибся, было вот так:

Код: Выделить всё

JabberSend(6000@krdserver.crm,6001@krdserver.crm, ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}.)

Re: Не работает команда в CLI, а в списке команд она есть

Добавлено: 27 фев 2021, 20:24
maxy
Тема кончено очень старая, но все таки. Есть ли способ отправить сообщение из CLI используя JabberSend.
Мне это необходимо для получения сообщение и core reload, если будут перегружены транки, вместо емейла.