![星号在来电时向点唱机发送静音命令](https://linux22.com/image/505144/%E6%98%9F%E5%8F%B7%E5%9C%A8%E6%9D%A5%E7%94%B5%E6%97%B6%E5%90%91%E7%82%B9%E5%94%B1%E6%9C%BA%E5%8F%91%E9%80%81%E9%9D%99%E9%9F%B3%E5%91%BD%E4%BB%A4.png)
我们正在试用 Asterisk Now 服务器来取代我们老化的 PBX 系统。其中一项“好用”的功能是,如果检测到来电,可以暂停或降低办公室点唱机的音量。
我们目前运行一个 Linux 点唱机,它使用 mpd 通过扬声器播放音乐,并可由 mpc 客户端控制。我们可以手动发出以下命令来实现这一点:
mpc 第 20 卷
有人知道如何让星号执行这个命令或者当电话打入特定分机时我们可以执行的某些操作吗?
答案1
多么新颖的想法!我还没有这样做过,但我认为我可以让你走上正确的道路。如果你的系统与我的类似,你会发现以下文件可以作为示例:
对于数字传真:
/etc/asterisk/extensions.conf
/var/lib/asterisk/bin/fax-process.pl
对于带有音频消息附件的电子邮件:
/etc/asterisk/extensions_additional.conf
/var/lib/asterisk/bin/audio-email.pl
我们将重点关注第二个操作,查看 extensions_additional.conf 文件中处理音频附件的部分:
[app-dictate-send]
include => app-dictate-send-custom
exten => *35,1,Answer
exten => *35,n,Macro(user-callerid,)
exten => *35,n,Noop(CallerID is ${AMPUSER})
exten => *35,n,Set(DICTENABLED=${DB(AMPUSER/${AMPUSER}/dictate/enabled)})
exten => *35,n,GotoIf($[$["x${DICTENABLED}"="x"]|$["x${DICTENABLED}"="xdisabled"]]?nodict:dictok)
exten => *35,n(nodict),Playback(feature-not-avail-line)
exten => *35,n,Hangup
exten => *35,n(dictok),Read(DICTFILE,enter-filename-short,,,,)
exten => *35,n,Set(DICTEMAIL=${DB(AMPUSER/${AMPUSER}/dictate/email)})
exten => *35,n,Set(DICTFMT=${DB(AMPUSER/${AMPUSER}/dictate/format)})
exten => *35,n,Set(NAME=${DB(AMPUSER/${AMPUSER}/cidname)})
exten => *35,n,Playback(dictation-being-processed)
exten => *35,n,System(/var/lib/asterisk/bin/audio-email.pl --file /var/lib/asterisk/sounds/dictate/${AMPUSER}/${DICTFILE}.raw --attachment dict-${DICTFILE} --format ${DICTFMT} --to ${DICTEMAIL} --subject "Dictation from ${NAME} Attached")
exten => *35,n,Playback(dictation-sent)
exten => *35,n,Macro(hangupcall,)
; end of [app-dictate-send]
您将看到引用了 /var/lib/asterisk/bin/audio-email.pl。该函数逐行运行,因此如果有人挂断(即第 8 行),则 .pl 文件永远不会被触发。但在该函数运行之前,需要将其包含如下:
include => app-dictate-send
我不会在这里打印出 .pl 文件。如果您可以编写一个 pl 文件,在手动运行它时会调低办公室点唱机的音量,那么您绝对可以设置 Asterisk 在接到来电时触发 pl。
查看 /var/lib/asterisk/bin/fax-process.pl 了解 asterisk 如何发送电子邮件。
现在,您可能需要调整我上面引用的第一个文件:/etc/asterisk/extensions.conf。此文件告诉 Asterisk 在第一次接到呼叫时该做什么。查看文件顶部附近的内容:
[from-did-direct]
include => ext-findmefollow
include => ext-local
您可以创建类似“turn_down_music.pl”的内容,并将其包含在类似 [app-lower-music] 的函数中。然后您可以使用以下命令将其包含:
[from-did-direct]
include => app-lower-music
include => ext-findmefollow
include => ext-local
请注意,[ext-local] 文件在 extensions_additional.conf 文件中定义,但在 extensions.conf 文件中引用。您可以创建自己的自定义扩展文件并在 extensions.conf 文件中引用它,如下所示:
#include extensions_custom.conf
#include extensions_music.conf
还请注意,# 不会注释掉任何行。相反,; 会注释掉任何行。
我从这两本书中收获颇多:
祝你好运!
答案2
如果这个 AsteriskNow 与 Elastix 类似,您应该在 extensions_custom.conf 中定义新的部分,如下所示:
[from-pstn-custom]
exten = 0123456,n,System(/var/lib/asterisk/bin/whatever-command.pl)
第一个数字是您的传入 DID,“n”是执行命令的顺序(这个通常位于列表的开头,因为 from-pstn-custom 包含在顶部)。这也可以使用 AGI 脚本来解决,但这对您来说可能有点过头了。