如何配置星号即时消息(how to configure asterisk instant messaging)

编程入门 行业动态 更新时间:2024-10-23 21:30:07
如何配置星号即时消息(how to configure asterisk instant messaging)

星号是否支持即时消息? 我曾尝试为IM配置星号( 来自此示例 ),但是当我尝试将IM发送到另一个SIP帐户星号时返回警告:

WARNING[20128]: chan_sip.c:16379 receive_message: Received message to sip:test3@192.168.21.153 from sip:test1@192.168.21.153; tag=d9fdcc28313946c5a2a6ae1eae997c62, dropped it... Content-Type:text/plain Message: hahaha WARNING[20128]: chan_sip.c:16379 receive_message: Received message to sip:test3@192.168.21.153 from sip:test1@192.168.21.153; tag=d9fdcc28313946c5a2a6ae1eae997c62, dropped it... Content-Type:text/plain Message: hahaha此外,SIP客户端返回消息“方法不允许”。 这是我的sip.conf文件:

[general] context=internal allowguest=no allowoverlap=no bindport=5060 bindaddr=0.0.0.0 srvlookup=no disallow=all allow=ulaw alwaysauthreject=yes canreinvite=no nat=yes session-timers=refuse localnet=192.168.21.153/255.255.255.0 accept_outofcall_message=yes outofcall_message_context=internal [test1] type=friend host=dynamic secret=test1 context=internal [test2] type=friend host=dynamic secret=test2 context=internal [test3] type=friend host=dynamic secret=test3 context=internal

这是我的extensions.conf文件:

[internal] exten => test1,1,Answer() exten => test1,2,Dial(SIP/test1,60) exten => test1,3,Playback(vm-nobodyavail) exten => test1,4,VoiceMail(test1@main) exten => test1,5,Hangup() exten => test2,1,Answer() exten => test2,2,Dial(SIP/test2,60) exten => test2,3,Playback(vm-nobodyavail) exten => test2,4,VoiceMail(test2@main) exten => test2,5,Hangup() exten => test3,1,Answer() exten => test3,2,Dial(SIP/test3,60) exten => test3,3,Playback(vm-nobodyavail) exten => test3,4,VoiceMail(test3@main) exten => test3,5,Hangup() exten => 8001,1,VoicemailMain(test1@main) exten => 8001,2,Hangup() exten => 8002,1,VoicemailMain(test2@main) exten => 8002,2,Hangup() exten => 8003,1,VoicemailMain(test3@main) exten => 8003,2,Hangup() exten => _.,1,NoOp(SMS receiving dialplan invoked) exten => _.,n,NoOp(To ${MESSAGE(to)}) exten => _.,n,NoOp(From ${MESSAGE(from)}) exten => _.,n,NoOp(Body ${MESSAGE(body)}) exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)}) exten => _.,n,MessageSend(${ACTUALTO},${MESSAGE(from)}) exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS}) exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]? sendfailedmsg) exten => _.,n,Hangup() exten => h,1,Hangup() ; ; Handle failed messaging exten => _.,n(sendfailedmsg),Set(MESSAGE(body)="[${STRFTIME(${EPOCH},, %d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.") exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)}) exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)}) exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter) exten => _.,n,Hangup() exten => h,1,Hangup()

Does asterisk support instant messages? I have tried to configure asterisk for IM (from this example), but when I'm trying to send IM to another sip account asterisk returns warning:

WARNING[20128]: chan_sip.c:16379 receive_message: Received message to sip:test3@192.168.21.153 from sip:test1@192.168.21.153; tag=d9fdcc28313946c5a2a6ae1eae997c62, dropped it... Content-Type:text/plain Message: hahaha Additionally the SIP client returns message "method not allowed". This is my sip.conf file:

[general] context=internal allowguest=no allowoverlap=no bindport=5060 bindaddr=0.0.0.0 srvlookup=no disallow=all allow=ulaw alwaysauthreject=yes canreinvite=no nat=yes session-timers=refuse localnet=192.168.21.153/255.255.255.0 accept_outofcall_message=yes outofcall_message_context=internal [test1] type=friend host=dynamic secret=test1 context=internal [test2] type=friend host=dynamic secret=test2 context=internal [test3] type=friend host=dynamic secret=test3 context=internal

And this is my extensions.conf file:

[internal] exten => test1,1,Answer() exten => test1,2,Dial(SIP/test1,60) exten => test1,3,Playback(vm-nobodyavail) exten => test1,4,VoiceMail(test1@main) exten => test1,5,Hangup() exten => test2,1,Answer() exten => test2,2,Dial(SIP/test2,60) exten => test2,3,Playback(vm-nobodyavail) exten => test2,4,VoiceMail(test2@main) exten => test2,5,Hangup() exten => test3,1,Answer() exten => test3,2,Dial(SIP/test3,60) exten => test3,3,Playback(vm-nobodyavail) exten => test3,4,VoiceMail(test3@main) exten => test3,5,Hangup() exten => 8001,1,VoicemailMain(test1@main) exten => 8001,2,Hangup() exten => 8002,1,VoicemailMain(test2@main) exten => 8002,2,Hangup() exten => 8003,1,VoicemailMain(test3@main) exten => 8003,2,Hangup() exten => _.,1,NoOp(SMS receiving dialplan invoked) exten => _.,n,NoOp(To ${MESSAGE(to)}) exten => _.,n,NoOp(From ${MESSAGE(from)}) exten => _.,n,NoOp(Body ${MESSAGE(body)}) exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)}) exten => _.,n,MessageSend(${ACTUALTO},${MESSAGE(from)}) exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS}) exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]? sendfailedmsg) exten => _.,n,Hangup() exten => h,1,Hangup() ; ; Handle failed messaging exten => _.,n(sendfailedmsg),Set(MESSAGE(body)="[${STRFTIME(${EPOCH},, %d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.") exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)}) exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)}) exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter) exten => _.,n,Hangup() exten => h,1,Hangup()

最满意答案

是。 Asterisk正在支持IM。 请使用Asterisk 11或更高版本。 我认为你使用的是旧版本。 我在asterisk-10中遇到了同样的问题。 我升级到Asterisk到Asterisk-11。 请参阅以下Asterisk IM的详细说明。

在sip.conf文件的一般部分写下面的行。

[general] accept_outofcall_message=yes outofcall_message_context=dialplan_name auth_message_requests=yes

在extensions.conf文件中写下以下行。 这是用于发送IM的拨号方案。

[dialplan_name] exten => _.,1,NoOp(SMS receiving dialplan invoked) exten => _.,n,NoOp(To ${MESSAGE(to)}) exten => _.,n,NoOp(From ${MESSAGE(from)}) exten => _.,n,NoOp(Body ${MESSAGE(body)}) exten => _.,n,AGI(chatplan.php,${MESSAGE(from)}) ;exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)}) ;exten => _.,n,ExecIf($["${ACTUALTO}" != "sip:${EXTEN}"]?Set(ACTUALTO=sip:${EXTEN})) exten => _.,n,MessageSend(${ACTUALTOS},${MESSAGE(from)}) exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS}) exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg) exten => _.,n,Hangup() ; ; Handle failed messaging exten => _.,n(sendfailedmsg),NoOp(Sending error to user) exten => _.,n,Set(SRC=${MESSAGE(from)}) exten => _.,n,Set(DST=${MESSAGE(to)}) exten => _.,n,Set(MSG=${MESSAGE(body)}) exten => _.,n,Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Sending when available") exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)}) exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)}) exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter) exten => _.,n,GotoIf($["${INQUEUE}" != "1"]?startq) exten => _.,n,Hangup() ; exten => _.,n(startq),NoOp(Queueing messaging for offline) exten => _.,n,Set(MSGTIME=${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}) exten => _.,n,SYSTEM(/var/lib/asterisk/agi-bin/astqueue.sh –SRC ‘${SRC}’ –DST ‘${DST}’ –MSG ‘${MSG}’) exten => _.,n,Hangup()[app-fakeanswer] exten => _.,1,NoCDR exten => _.,n,Set(DESTDEV=${EXTEN}) exten => _.,n,Set(THISDEVSTATE=${DEVICE_STATE(SIP/${DESTDEV})}) exten => _.,n,GotoIf($["${THISDEVSTATE}" = "UNAVAILABLE"]?hang) exten => _.,n,GotoIf($["${THISDEVSTATE}" = "UNKNOWN"]?hang) exten => _.,n,Answer exten => _.,n,Hangup() exten => _.,n(hang),Hangup()

在您尊重的文件中添加以上行。 使用Asterisk-11进行IM。 我在旧的星号版本中遇到了同样的问题。 希望你使用的是Asterisk-11。

Yes. Asterisk is supporting IM. Please Use Asterisk 11 or higher version. I think you are using old version. I had same problem in asterisk-10. I upgraded to Asterisk to Asterisk-11. Please see below Detail instruction for Asterisk IM.

Write below line in general section of sip.conf file.

[general] accept_outofcall_message=yes outofcall_message_context=dialplan_name auth_message_requests=yes

Write below lines in extensions.conf file. This is dialplan to send IM.

[dialplan_name] exten => _.,1,NoOp(SMS receiving dialplan invoked) exten => _.,n,NoOp(To ${MESSAGE(to)}) exten => _.,n,NoOp(From ${MESSAGE(from)}) exten => _.,n,NoOp(Body ${MESSAGE(body)}) exten => _.,n,AGI(chatplan.php,${MESSAGE(from)}) ;exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)}) ;exten => _.,n,ExecIf($["${ACTUALTO}" != "sip:${EXTEN}"]?Set(ACTUALTO=sip:${EXTEN})) exten => _.,n,MessageSend(${ACTUALTOS},${MESSAGE(from)}) exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS}) exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg) exten => _.,n,Hangup() ; ; Handle failed messaging exten => _.,n(sendfailedmsg),NoOp(Sending error to user) exten => _.,n,Set(SRC=${MESSAGE(from)}) exten => _.,n,Set(DST=${MESSAGE(to)}) exten => _.,n,Set(MSG=${MESSAGE(body)}) exten => _.,n,Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Sending when available") exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)}) exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)}) exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter) exten => _.,n,GotoIf($["${INQUEUE}" != "1"]?startq) exten => _.,n,Hangup() ; exten => _.,n(startq),NoOp(Queueing messaging for offline) exten => _.,n,Set(MSGTIME=${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}) exten => _.,n,SYSTEM(/var/lib/asterisk/agi-bin/astqueue.sh –SRC ‘${SRC}’ –DST ‘${DST}’ –MSG ‘${MSG}’) exten => _.,n,Hangup()[app-fakeanswer] exten => _.,1,NoCDR exten => _.,n,Set(DESTDEV=${EXTEN}) exten => _.,n,Set(THISDEVSTATE=${DEVICE_STATE(SIP/${DESTDEV})}) exten => _.,n,GotoIf($["${THISDEVSTATE}" = "UNAVAILABLE"]?hang) exten => _.,n,GotoIf($["${THISDEVSTATE}" = "UNKNOWN"]?hang) exten => _.,n,Answer exten => _.,n,Hangup() exten => _.,n(hang),Hangup()

Add above lines in your respected files. Use Asterisk-11 for IM. I had same problem in older asterisk version. Hope you are using Asterisk-11.

更多推荐

本文发布于:2023-08-02 22:45:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1381500.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:星号   即时消息   configure   messaging   instant

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!