Freeswitch使用originate轉(zhuǎn)dialplan


概述

Freeswitch是一款非常好用的開源VOIP軟交換平臺(tái)滔灶。

最近在對(duì)fs做一些功能測(cè)試肛宋,測(cè)試的過程中產(chǎn)生的一個(gè)需求咐容,如何從fs發(fā)起呼叫并把后續(xù)的呼叫流程轉(zhuǎn)到某一個(gè)dialplan上授药,這樣在測(cè)試時(shí)會(huì)非常方便好用幅疼,可以隨時(shí)修改dialplan定制業(yè)務(wù)流程。

通過對(duì)fs官方文檔搜索后堂飞,排除了“transfer”灌旧、“execute_extension”、“bind_meta_app”绰筛,偶然發(fā)現(xiàn)“originate”接口可以直接實(shí)現(xiàn)這樣的功能需求枢泰。


環(huán)境

centos:CentOS? release 7.0 (Final)或以上版本

freeswitch:v1.8.7

GCC:4.8.5


originate

originate是一個(gè)API接口,接口格式如下铝噩。

originate <call url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]


接口實(shí)例衡蚂。

originate{origination_caller_id_number=9005551212}sofia/default/whatever@wherever&bridge({origination_caller_id_number=8001234567}sofia/profile/someother@destination.com)


從接口格式來看,originate接口可以使用“&”接一個(gè)APP接口骏庸,在呼叫接通之后繼續(xù)處理流程毛甲,但是有時(shí)候一個(gè)APP是不夠用的,這樣我們就需要在“originate”之后把呼叫流程轉(zhuǎn)到dialplan中繼續(xù)處理具被。


轉(zhuǎn)dialplan的接口實(shí)例玻募。

originate{origination_caller_id_number=9005551212}sofia/default/whatever@wherever19005551212 XML default CALLER_ID_NAME CALLER_ID_NUMBER

這個(gè)實(shí)例中,使用originate接口發(fā)起呼叫一姿,然后轉(zhuǎn)到XML類型的撥號(hào)計(jì)劃“default”中七咧。


配置

修改配置文件“/usr/local/freeswitch/conf/dialplan/test.xml”改执。

<include>

? ? ? ? <context name="ext_test">

? ? ? ? ? ? ? ? <extension name="test" continue="false">

? ? ? ? ? ? ? ? ? ? ? ? <condition field="destination_number" expression="^(\d+)$">

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <action application="sched_hangup" data="+10"/>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <action application="send_dtmf" data="1234"/>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <action application="sleep" data="5000"/>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <action application="endless_playback" data="/usr/local/freeswitch/sounds/101-baidu-mp3.mp3"/>

? ? ? ? ? ? ? ? ? ? ? ? </condition>

? ? ? ? ? ? ? ? </extension>

? ? ? ? </context>

</include>


測(cè)試

在freeswitch命令行中使用originate發(fā)起呼叫,再轉(zhuǎn)到撥號(hào)計(jì)劃ext_test發(fā)送DTMF坑雅。

freeswitch@localhost.localdomain>originate{originator_codec=PCMA,origination_caller_id_number=0755110}sofia/external/sip:1001@10.55.55.138:50801001 XML ext_test


fs呼叫138服務(wù)器上的1001,呼叫接通之后衬横,發(fā)送DTMF并播放提示語(yǔ)音裹粤,日志如下。

freeswitch@localhost.localdomain>originate{originator_codec=PCMA,origination_caller_id_number=0755110}sofia/external/sip:1001@10.55.55.138:50801001 XML ext_test

...

2022-06-13 11:37:15.601015 [DEBUG]sofia.c:7084 Channel sofia/external/1001@10.55.55.138:5080 entering state [ready][200]

...

2022-06-13 11:37:15.610983 [INFO]mod_dialplan_xml.c:637 Processing?<0755110>->1001 in context ext_test

Dialplan:sofia/external/1001@10.55.55.138:5080 parsing [ext_test->test]continue=false

Dialplan:sofia/external/1001@10.55.55.138:5080 Regex (PASS) [test]destination_number(1001) =~ /^(\d+)$/ break=on-false

Dialplan:sofia/external/1001@10.55.55.138:5080 Action sched_hangup(+10)

Dialplan:sofia/external/1001@10.55.55.138:5080 Action send_dtmf(1234)

Dialplan: sofia/external/1001@10.55.55.138:5080Action sleep(5000)

Dialplan:sofia/external/1001@10.55.55.138:5080 Actionendless_playback(/usr/local/freeswitch/sounds/101-baidu-mp3.mp3)

...

EXECUTEsofia/external/1001@10.55.55.138:5080 sched_hangup(+10)

EXECUTE sofia/external/1001@10.55.55.138:5080send_dtmf(1234)

2022-06-13 11:37:15.610983 [DEBUG]switch_core_io.c:1918 sofia/external/1001@10.55.55.138:5080 send dtmf digit=1ms=250 samples=2000

...

EXECUTEsofia/external/1001@10.55.55.138:5080 sleep(5000)

...

EXECUTE sofia/external/1001@10.55.55.138:5080endless_playback(/usr/local/freeswitch/sounds/101-baidu-mp3.mp3)

...

2022-06-13 11:37:25.121013 [DEBUG]switch_ivr_play_say.c:1942 done playing file/usr/local/freeswitch/sounds/101-baidu-mp3.mp3

...

2022-06-13 11:37:25.121013 [DEBUG]mod_sofia.c:440 Channel sofia/external/1001@10.55.55.138:5080 hanging up,cause: ALLOTTED_TIMEOUT


總結(jié)

使用originate接口蜂林,可以直接實(shí)現(xiàn)呼叫轉(zhuǎn)dialplan的業(yè)務(wù)流程遥诉。

仔細(xì)想一想,通過bridge轉(zhuǎn)接到某一個(gè)dailplan應(yīng)該也有實(shí)現(xiàn)的可行性噪叙。具體情況未詳細(xì)深入了解矮锈。


空空如常

求真得真

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市睁蕾,隨后出現(xiàn)的幾起案子苞笨,更是在濱河造成了極大的恐慌,老刑警劉巖子眶,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瀑凝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡臭杰,警方通過查閱死者的電腦和手機(jī)粤咪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渴杆,“玉大人寥枝,你說我怎么就攤上這事〈沤保” “怎么了囊拜?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)点寥。 經(jīng)常有香客問我艾疟,道長(zhǎng),這世上最難降的妖魔是什么敢辩? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任蔽莱,我火速辦了婚禮,結(jié)果婚禮上戚长,老公的妹妹穿的比我還像新娘盗冷。我一直安慰自己,他們只是感情好同廉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布仪糖。 她就那樣靜靜地躺著柑司,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锅劝。 梳的紋絲不亂的頭發(fā)上攒驰,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音故爵,去河邊找鬼玻粪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诬垂,可吹牛的內(nèi)容都是我干的劲室。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼结窘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼很洋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起隧枫,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤喉磁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后悠垛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體线定,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年确买,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斤讥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡湾趾,死狀恐怖芭商,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搀缠,我是刑警寧澤铛楣,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站艺普,受9級(jí)特大地震影響簸州,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歧譬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一岸浑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瑰步,春花似錦矢洲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)责静。三九已至,卻和暖如春盖桥,著一層夾襖步出監(jiān)牢的瞬間灾螃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工揩徊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睦焕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓靴拱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親猾普。 傳聞我的和親對(duì)象是個(gè)殘疾皇子袜炕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 概述 freeswitch 在對(duì)VOIP語(yǔ)音通話中,可以通過playback命令播放IVR語(yǔ)音文件初家。 默認(rèn)情況下偎窘,...
    求真得真閱讀 604評(píng)論 0 0
  • Lua API Reference 關(guān)于 本頁(yè)面提供Lua的FreeSWITCH API文檔。 API Sessi...
    5djindoudou閱讀 12,046評(píng)論 0 4
  • 概述 之前的文章中溜在,我們講解了freeswitch的源碼基本結(jié)構(gòu)陌知,如何新增一個(gè)插件式模塊,以及如何在模塊中新增一個(gè)...
    求真得真閱讀 2,031評(píng)論 0 0
  • 概述 之前的文章中掖肋,我們講解了freeswitch的源碼基本結(jié)構(gòu)仆葡,如何新增一個(gè)插件式模塊,以及如何在模塊中新增一個(gè)...
    求真得真閱讀 688評(píng)論 0 0
  • 目錄 1. 安裝freeswitch├── 1.1 相關(guān)地址├── 1.2 安裝基礎(chǔ)包├── 1.3 安裝依賴包├...
    Jetsly閱讀 67,207評(píng)論 8 25