關於Asterisk detect DTMF

98 views
Skip to first unread message

Nick Hong

unread,
Dec 9, 2009, 8:59:45 PM12/9/09
to Taiwan Asterisk Users' Group - www.osslab.org.tw
在下想要ASTERISK 能判別user端的DTMF, 透過程式作認證功能,但把asterisk cmd read (http://
www.voip-info.org/wiki/view/Asterisk+cmd+Read)加進extension.conf, 用X-lite
注冊撥打手機,都無法試成功,請問有哪位高手能解惑嗎?

A.Lang, Hsu - ITBLOG.ITVIEW.COM.TW

unread,
Dec 9, 2009, 9:21:12 PM12/9/09
to aster...@googlegroups.com
你的描述不夠清楚,請詳細將系統版本,所作的所有動作細節及設定內容,以及測試的行為模式都一一細說。


2009/12/10 Nick Hong <nic...@gmail.com>

Nick Hong

unread,
Dec 12, 2009, 12:57:54 AM12/12/09
to Taiwan Asterisk Users' Group - www.osslab.org.tw

On 12月10日, 上午9時59分, Nick Hong <nick...@gmail.com> wrote:
> 在下想要ASTERISK 能判別user端的DTMF, 透過程式作認證功能,但把asterisk cmd read (http://www.voip-info.org/wiki/view/Asterisk+cmd+Read) 加進extension.conf, 用X-lite
> 注冊撥打手機,都無法試成功,請問有哪位高手能解惑嗎?


Ok, 我重新說明并實驗,結果說明

系統版本:ASTERISK 1.4.26.3

實驗目的:能否判別user端的DTMF?

測試流程
softphone: X-Lite
1. SIP account: 3001撥打3000
2. SIP account: 3001撥打下車至手機號碼
(SIP/3001) -----------> ASTERISK ------------> (SIP/3000) or 下車至手機號


Dialplan

exten => 1,1(start),Gotoif($[ "${LEN(${extensao})}" < "3"])
exten => 1,n,NoOp(Executing - ${extensao} - )
exten => 1,n,Dial(SIP/3000,10,A(hello-world))
exten => 1,n,Playback(hello-world)
exten => 1,n,Read(MY_DIGITS,,3)
exten => 1,n,SayDigits(${MY_DIGITS})
exten => 1,n,Set(extensao=${extensao}${digito})
exten => 1,n,GoTo(start)
exten => 1,n,Hangup


發現 Asterisk cmd Read() 是在撥號端有作用,能識別你所輸入的DTMF信號

但若是接受端輸入DTMF的信號,似乎無法被讀取

不曉得有沒有人試過
要如何讓接受端輸入DTMF的信號,能被Asterisk讀取?

希望各位高手們能給予小弟我指點和指正!

A.Lang, Hsu - ITBLOG.ITVIEW.COM.TW

unread,
Dec 12, 2009, 6:17:32 AM12/12/09
to aster...@googlegroups.com
試試用 Dial + Macro 方式來做,剛剛做了簡單的實驗,dialplan 如下
12345678 手機號碼
111 分機號碼
Caller 撥 5557,Callee 接起電話後,要按 1 才會接通。

-----------------------------------------------------------------------------------------------------------
[my-screen-dial]
exten => 5557,1,Dial(LOCAL/12345678@from-internal,40,rM(my-screen))
;exten => 5557,1,Dial(SIP/111,40,M(my-screen))
exten => 5557,n,Hangup
[macro-my-screen]
exten => s,1,Wait(1)
exten => s,n,Background(incoming-call-1-accept-2-decline)
exten => s,n,WaitExten(10)
exten => 1,1,NoOp(Caller accepted)
exten => i,1,Set(MACRO_RESULT=CONTINUE)
exten => t,1,Set(MACRO_RESULT=CONTINUE)


2009/12/12 Nick Hong <nic...@gmail.com>

--

您已訂閱「Google 網上論壇」的「Taiwan Asterisk Users' Group - www.osslab.org.tw」群組,因此我們特別傳送這封郵件通知您。
如要在此群組張貼留言,請傳送電子郵件至 aster...@googlegroups.com
如要取消訂閱此群組,請傳送電子郵件至 asterisk-tw...@googlegroups.com
如需更多選項,請造訪此群組:http://groups.google.com/group/asterisk-tw?hl=zh-TW



Nick Hong

unread,
Dec 18, 2009, 12:50:57 AM12/18/09
to Taiwan Asterisk Users' Group - www.osslab.org.tw
感謝版大提供的資訊,經過實驗後分享

透過Macro-xxx的撥打規則,可加進Read()來做Callee的DTMF識別

For example

[Macro-xxx]
exten => s,1,Wait(1)
exten => s,n,Background(hello-world)
exten => 1,1,NoOp(Caller accepted)
exten => 1,n,Read(DTMF,,3)
exten => 1,n,SayDigits(${DTMF})


exten => i,1,Set(MACRO_RESULT=CONTINUE)
exten => t,1,Set(MACRO_RESULT=CONTINUE)


不過Macro還有更多玩法,小弟我會繼續研究再和大家分享!

On 12月12日, 下午7時17分, "A.Lang, Hsu - ITBLOG.ITVIEW.COM.TW"


<alang....@gmail.com> wrote:
> 試試用 Dial + Macro 方式來做,剛剛做了簡單的實驗,dialplan 如下
> 12345678 手機號碼
> 111 分機號碼
> Caller 撥 5557,Callee 接起電話後,要按 1 才會接通。
>

> ------------------------------------------------------------------------------------------------------------


> [my-screen-dial]
> exten => 5557,1,Dial(LOCAL/12345678@from-internal,40,rM(my-screen))
> ;exten => 5557,1,Dial(SIP/111,40,M(my-screen))
> exten => 5557,n,Hangup
> [macro-my-screen]
> exten => s,1,Wait(1)
> exten => s,n,Background(incoming-call-1-accept-2-decline)
> exten => s,n,WaitExten(10)
> exten => 1,1,NoOp(Caller accepted)
> exten => i,1,Set(MACRO_RESULT=CONTINUE)
> exten => t,1,Set(MACRO_RESULT=CONTINUE)
>

> 2009/12/12 Nick Hong <nick...@gmail.com>

> > 如要取消訂閱此群組,請傳送電子郵件至 asterisk-tw...@googlegroups.com<asterisk-tw%2Bunsu...@googlegr-oups.com>
> > 。
> > 如需更多選項,請造訪此群組:http://groups.google.com/group/asterisk-tw?hl=zh-TW。- 隱藏被引用文字 -
>
> - 顯示被引用文字 -

A.Lang, Hsu - ITBLOG.ITVIEW.COM.TW

unread,
Dec 18, 2009, 12:51:06 AM12/18/09
to Asterisk/Elastix User Group in Taiwan - OSSLab.org.tw
Thanks Nick for your sharing.

A.Lang

---------- Forwarded message ----------
From: Nick Hong <nic...@gmail.com>
Date: 2009/12/18
Subject: Re: 關於Asterisk detect DTMF
To: "A.Lang, Hsu - ITBLOG.ITVIEW.COM.TW" <alan...@gmail.com>


感謝版大提供的資訊,經過實驗後分享

透過Macro-xxx的撥打規則,可加進Read()來做Callee的DTMF識別

For example

[Macro-xxx]
exten => s,1,Wait(1)
exten => s,n,Background(hello-world)
exten => 1,1,NoOp(Caller accepted)
exten => 1,n,Read(DTMF,,3)
exten => 1,n,SayDigits(${DTMF})
exten => i,1,Set(MACRO_RESULT=CONTINUE)
exten => t,1,Set(MACRO_RESULT=CONTINUE)


不過Macro還有更多玩法,小弟我會繼續研究再和大家分享!





On 12月12日, 下午7時17分, "A.Lang, Hsu - ITBLOG.ITVIEW.COM.TW"
<alang....@gmail.com> wrote:
> 試試用 Dial + Macro 方式來做,剛剛做了簡單的實驗,dialplan 如下
> 12345678 手機號碼
> 111 分機號碼
> Caller 撥 5557,Callee 接起電話後,要按 1 才會接通。
>
> ------------------------------------------------------------------------------------------------------------

> [my-screen-dial]
> exten => 5557,1,Dial(LOCAL/12345678@from-internal,40,rM(my-screen))
> ;exten => 5557,1,Dial(SIP/111,40,M(my-screen))
> exten => 5557,n,Hangup
> [macro-my-screen]
> exten => s,1,Wait(1)
> exten => s,n,Background(incoming-call-1-accept-2-decline)
> exten => s,n,WaitExten(10)
> exten => 1,1,NoOp(Caller accepted)
> exten => i,1,Set(MACRO_RESULT=CONTINUE)
> exten => t,1,Set(MACRO_RESULT=CONTINUE)
>
> 2009/12/12 Nick Hong <nick...@gmail.com>
Reply all
Reply to author
Forward
0 new messages