AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Не работает команда (JabberSend)в консоли астера, но она списке команд она есть и модуль загружен и подключен к jabber

Newbies/FAQ Forum 8 сообщений -
#1

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:]
Jabber:
JID:
Message:
[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

_________________
Shit happens
#2

Из CLI оно и не должно работать. Это комманда плана набора и экшн AMI.

Added after 28 seconds:

Собственно manager show command вам об этом и говорит.
#3

Xelas, возможно, я что-то не так делаю...
вот кусок extensions_custom.conf:
Код:
; Отправляем входящие 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()

Т.е. настройки на системе на которой это работает и на которой не работает - одинаковы.
Как мне проверить JabberSend из консоли???

_________________
Shit happens
#4

Как мне кажется, правильно будет так:
Код:
exten => ussd,n,JabberSend(asterisk,6001@krdserver.crm/Office, ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}.)


Первый параметр -- аккаунт, так, как он описан в xmpp.conf. Судя по вашему:
Код:
CLI> xmpp show connections
Jabber Users and their status:
[asterisk] 6000@krdserver.crm - Connected

это именно asterisk

telegk1*CLI> core show application JabberSend

-= Info about application 'JabberSend' =-

[Synopsis]
Sends an XMPP message to a buddy.

[Description]
Sends the content of as text message from the given to
the buddy identified by
Example: JabberSend(asterisk,bob@domain.com,Hello world) sends "Hello world"
to as an XMPP message from the account , 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
#5

Xelas, спасибо, но я пробовал и так и так.

Код:
*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>

После этого на экспериментальной системе я в джаббер получать USSD, а тут почему-то не получаю.

_________________
Shit happens
#6

Я вот, попробывал у себя, и продолжу настаивать что в первом параметре должно быть имя секции.

Код:
[2013-11-28 12:03:56] -- Executing [2000@lan-phones-tss:1] JabberSend("SIP/1111dev-000115ba", "mainoffice@jabber.XXXX,sinitsa@jabber.XXXX,Test, message") in new stack
[2013-11-28 12:03:56] WARNING[29483][C-0000fb0f]: res_xmpp.c:1762 xmpp_send_exec: Could not find sender connection: 'mainoffice@jabber.XXXX'


Если указать имя секции, то сообщения я получаю.

Если все-таки, даже указывая имя секции в первом параметре вы не получаете сообщения, то стоит посмотреть в логи жаббер-сервера. Возможно получатель заблокировал или не авторизовал отправителя. Возможно получатель подключен к жабберу двумя клиентами, приоритет одного из которых выше, и вы просто ищете сообщение не в том клиенте. Возможно какое-то понимание даст дамп трафика от астера к жабберу.
#7

xelas, дорогой, спасибо огромное!!!!
Действительно, после того как вставил название секции, все заработало.
Похоже, это связано с тем что астер 11, потому что на астере 10 все работает именно с таким синтаксисом, как у меня написано.

_________________
Shit happens
#8

Это вряд ли. Скорее всего на том сервере, где у вас 10-ка имя секции совпадает с жаббер-именем.