




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄ASTERISK系統(tǒng)主要線程 2系統(tǒng)主控線程 2通道主控線程 2維護(hù)用戶狀態(tài)線程 3交換線程 3兩個(gè)codec之間轉(zhuǎn)換時(shí)間表 6系統(tǒng)交互命令 7呼叫轉(zhuǎn)移 14呼叫停泊 14語(yǔ)音郵件 15語(yǔ)音會(huì)議 17Asterisk主要程序模塊功能簡(jiǎn)述 18ASTERISK系統(tǒng)主要線程Asterisk系統(tǒng)主要是獨(dú)立線程方式工作的系統(tǒng),主要的獨(dú)立線程有:維護(hù)注冊(cè)用戶狀態(tài)的線程-維護(hù)各個(gè)用戶在存在于系統(tǒng)的整個(gè)過(guò)程中的各個(gè)狀態(tài)各個(gè)通道(SIP、IAX等)主控線程-解析自己通道內(nèi)的請(qǐng)求和響應(yīng)系統(tǒng)主控線程-完成系統(tǒng)的初始化啟動(dòng)工作,完成后等待用戶的輸入和用戶進(jìn)行交互交換線程-由各個(gè)通道來(lái)調(diào)用啟動(dòng),完成兩個(gè)通道的橋接和語(yǔ)音交換系統(tǒng)主控線程Asterisk系統(tǒng)除了主控程序外,其它功能模塊都編譯成共享文件*.so類型,都采用預(yù)加載或者實(shí)時(shí)加載的方式進(jìn)行協(xié)調(diào)工作,默認(rèn)情況下系統(tǒng)啟動(dòng)后加載所有的模塊,每個(gè)模塊都有一個(gè)load_module()函數(shù),主控找到每個(gè)模塊并加載,然后調(diào)用模塊內(nèi)部的load_module()函數(shù),這個(gè)函數(shù)完成模塊自己對(duì)應(yīng)的參數(shù)配置文件(如果有配置文件)數(shù)據(jù)的加載,并對(duì)模塊進(jìn)行初始化工作,初始化完成后,注冊(cè)自己模塊的應(yīng)用方法和該模塊支持的交互命令(這些是一般模塊加載的流程,通道模塊加載除外),模塊內(nèi)初始化函數(shù)調(diào)用完成后,系統(tǒng)繼續(xù)加載下一個(gè)模塊,直到所有的模塊加載完成,系統(tǒng)主控線程等待用戶的輸入,完成和用戶的交互,系統(tǒng)提供很多可以和用戶交互的命令,來(lái)管理、配置、查詢asterisk系統(tǒng)。通道主控線程完成以上普通模塊加載步驟后,建立一個(gè)該通道的主監(jiān)控線程,該線程在整個(gè)系統(tǒng)運(yùn)行期間一直運(yùn)行。每個(gè)通道(SIP通道、IAX通道等)都是在系統(tǒng)啟動(dòng)的時(shí)候,被加載進(jìn)系統(tǒng)的,每個(gè)通道都是通過(guò)獨(dú)立線程方式工作的,在各自配置的端口上監(jiān)聽(tīng)等待接收各自通道上的請(qǐng)求和響應(yīng),各個(gè)通道線程獨(dú)立運(yùn)行,每個(gè)通道維護(hù)一個(gè)事件結(jié)構(gòu),該結(jié)構(gòu)中放的是該通道中需要定時(shí)調(diào)度的事件(該事件是由該通道在解析數(shù)據(jù)的過(guò)程中,如果遇到需要隔一段時(shí)間來(lái)運(yùn)行的程序則寫入該結(jié)構(gòu)的,比如,重發(fā)事件、銷毀事件、期滿事件等),每個(gè)通道共同調(diào)用三個(gè)公共的函數(shù),一個(gè)是調(diào)度等待時(shí)間函數(shù),一個(gè)是判斷IO資源是否有數(shù)據(jù)發(fā)生的函數(shù),一個(gè)是調(diào)度該通道事件運(yùn)行的函數(shù),調(diào)度等待時(shí)間函數(shù)每次調(diào)用返回的是需要等待調(diào)度事件的最短時(shí)間,如果沒(méi)有事件,則返回-1,判斷IO資源函數(shù)用這個(gè)返回時(shí)間來(lái)掛起資源,判斷自己的通道上的數(shù)據(jù)發(fā)生,如果有數(shù)據(jù)發(fā)生就去調(diào)用自己注冊(cè)的數(shù)據(jù)處理函數(shù)去處理請(qǐng)求數(shù)據(jù),判斷IO資源函數(shù)返回后,調(diào)用事件運(yùn)行函數(shù),來(lái)判斷是否在該時(shí)間點(diǎn)有事件需要調(diào)度運(yùn)行,每個(gè)通道都是如此往復(fù)的調(diào)用這三個(gè)函數(shù)循環(huán)運(yùn)行判斷,直到系統(tǒng)運(yùn)行結(jié)束為止。維護(hù)用戶狀態(tài)線程這個(gè)線程也是獨(dú)立運(yùn)行的線程,在系統(tǒng)初始化時(shí)就開(kāi)始運(yùn)行,由它來(lái)維護(hù)系統(tǒng)中所有用戶在系統(tǒng)整個(gè)運(yùn)行過(guò)程中的在線、通話、離線等過(guò)程中所有的狀態(tài)記錄,該線程是通過(guò)接收信號(hào)量的方式工作的,在沒(méi)有收到給自己的信號(hào)量時(shí)處于阻塞狀態(tài)工作,如果某個(gè)通道的用戶在事務(wù)處理的過(guò)程中需要改變用戶的在線狀態(tài)時(shí),則由該通道的解析程序給該線程發(fā)出一個(gè)信號(hào),該線程收到該信號(hào)后,更改該用戶的狀態(tài),然后繼續(xù)處于阻塞狀態(tài)。交換線程該線程是由每個(gè)通道接收到請(qǐng)求后,由主叫完成自己需要處理的部分后,由主叫通道調(diào)用建立的交換線程,本線程首先在dailplan配置里查找用戶的撥號(hào)應(yīng)用配置,找到配置后調(diào)用相應(yīng)的應(yīng)用函數(shù)來(lái)處理這個(gè)撥號(hào),這個(gè)應(yīng)用函數(shù)本身要處理該應(yīng)用的所有流程,比如,定義的是dail應(yīng)用,那么該應(yīng)用要處理用戶的邀請(qǐng)、通話、到用戶掛機(jī)的整個(gè)流程后,才退出,返回到交換線程主流程中來(lái),這些撥號(hào)應(yīng)用函數(shù)在系統(tǒng)加載pbx時(shí),被加載入系統(tǒng)中,由它來(lái)分配和調(diào)度各個(gè)通道的事務(wù)功能處理函數(shù),該由那個(gè)通道處理就調(diào)度那個(gè)通道來(lái)處理,交換線程本身自是處理通用的流程部分,如果涉及到通道自己的屬性部分,那么就由交換線程來(lái)調(diào)度,比如,如果要向被叫通道發(fā)起邀請(qǐng)信令,那么就由交換線程來(lái)調(diào)用,該被叫通道的邀請(qǐng)函數(shù)自己用該通道支持的信令來(lái)組織該邀請(qǐng)信息包,然后向被叫客戶端發(fā)出邀請(qǐng),發(fā)出邀請(qǐng)后返回處理狀態(tài),然后由交換線程來(lái)等待被叫的應(yīng)答,如果被叫發(fā)出200Ok的應(yīng)答后,就由交換線程來(lái)調(diào)用主叫通道的應(yīng)答函數(shù),來(lái)用自己通道的信令來(lái)組織一個(gè)200OK的消息包,發(fā)往主叫客戶端,處理完后,交換線程得到用戶處理狀態(tài),然后由交換線程來(lái)決定下一步的處理,然后需要涉及到通道要處理的流程,就繼續(xù)調(diào)度通道函數(shù)來(lái)處理,具體信令的差異屏蔽在各個(gè)通道內(nèi)部,交換線程只是做公共的流程部分,就算是SIP客戶端撥SIP客戶端仍然走相同的交換流程,只是由交換線程來(lái)調(diào)度完成,asterisk的每個(gè)事務(wù)都要Digest的數(shù)字認(rèn)證,在這里不再贅述這個(gè)過(guò)程。以下這個(gè)通道描述的是SIP通道為主叫的交換線程建立和工作過(guò)程:當(dāng)通道線程接收到邀請(qǐng)請(qǐng)求后,調(diào)用一個(gè)事先注冊(cè)在系統(tǒng)中的請(qǐng)求和響應(yīng)處理程序,該程序首先進(jìn)行該信令的SIP語(yǔ)法解析語(yǔ)法沒(méi)有錯(cuò)誤后,查找該主叫用戶是否是系統(tǒng)的合法用戶如果為合法用戶則進(jìn)行SDP協(xié)議的解析,識(shí)別主叫用戶所能支持的codec,并且求出該通道在服務(wù)端所能支持的codec(服務(wù)端的支持的codec在該通道的配置中定義,在系統(tǒng)加載該通道時(shí)加載到系統(tǒng)中的)和主叫用戶支持的codec的交集,如果交集為空的,本次邀請(qǐng)失敗返回查找主叫用戶撥號(hào)計(jì)劃的合法性,并且找到是否有該撥號(hào)的DAIL-PLAN(該撥號(hào)計(jì)劃被定義在extensions.conf這個(gè)配置文件中,這個(gè)配置文件中定義了所有的撥號(hào)計(jì)劃配置,在系統(tǒng)加載交換共享模塊時(shí),被初始化到系統(tǒng)中),如果沒(méi)有找到用戶的撥號(hào)計(jì)劃定義,則失敗返回如果以上都正確的話,創(chuàng)建一個(gè)新的主叫通道資源,然后給主叫用戶返回一個(gè)“100Trying”的臨時(shí)響應(yīng)發(fā)送100臨時(shí)響應(yīng)后,更改主叫用戶的狀態(tài),給維護(hù)用戶狀態(tài)的線程發(fā)出一個(gè)更改用戶狀態(tài)的信號(hào),由空閑改為正在使用中,“1>2”然后就開(kāi)始啟動(dòng)一個(gè)該通道的交換線程,啟動(dòng)了交換線程后,處理請(qǐng)求響應(yīng)函數(shù)退出,該通道的主控線程又開(kāi)始監(jiān)控自己的端口,剩下的工作交由該線程來(lái)處理,通道的線程又開(kāi)始進(jìn)入等待讀數(shù)據(jù)狀態(tài)交換線程開(kāi)始運(yùn)行首先進(jìn)行用戶撥號(hào)計(jì)劃的解析,找到用戶撥號(hào)所對(duì)應(yīng)的應(yīng)用和所有該撥號(hào)對(duì)應(yīng)的屬性然后查找該撥號(hào)應(yīng)用所對(duì)應(yīng)處理函數(shù)的句柄,比如:Dial所對(duì)應(yīng)的處理函數(shù)為dail_exec_full,這些應(yīng)用處理函數(shù)都是在交換共享模塊加載的過(guò)程中注冊(cè)到該系統(tǒng)中的找到該撥號(hào)應(yīng)用處理函數(shù)后,把參數(shù)傳遞給它,然后調(diào)用該應(yīng)用處理函數(shù),該撥號(hào)應(yīng)用處理函數(shù)在處理每個(gè)撥號(hào)的流程都是一樣的,各個(gè)處理環(huán)節(jié)的具體實(shí)現(xiàn)由該通道自己來(lái)解析處理,只是由它來(lái)組織調(diào)用該通道注冊(cè)到系統(tǒng)的一些處理函數(shù),比如每個(gè)通道都具有的處理請(qǐng)求函數(shù)、發(fā)起邀請(qǐng)函數(shù)、控制狀態(tài)發(fā)送函數(shù)、應(yīng)答函數(shù)等該撥號(hào)應(yīng)用處理函數(shù)首先調(diào)用被叫通道的請(qǐng)求處理函數(shù),檢查撥號(hào)是否為系統(tǒng)注冊(cè)并且是在線的合法用戶,如果是合法用戶則為本次呼叫建立一個(gè)新的會(huì)話,并且創(chuàng)建一個(gè)新的通道資源處理完后,該撥號(hào)應(yīng)用處理函數(shù)繼續(xù)調(diào)用被叫通道邀請(qǐng)?zhí)幚砗瘮?shù),向被叫用戶發(fā)起邀請(qǐng)信息,該函數(shù)組織SIP邀請(qǐng)信令和SDP協(xié)議部分內(nèi)容,并且向被叫用戶發(fā)出邀請(qǐng)信息邀請(qǐng)發(fā)送成功后,該撥號(hào)應(yīng)用處理函數(shù)開(kāi)始等待被叫用戶的響應(yīng)信息,在這個(gè)等待過(guò)程中,被叫通道主控線程和該交換線程通過(guò)被叫通道內(nèi)的管道變量通訊(這個(gè)管道變量被定義在通道結(jié)構(gòu)中),通過(guò)這個(gè)管道的讀寫來(lái)獲取被叫用戶的應(yīng)答狀態(tài)(應(yīng)答狀態(tài)包括:180RING和200OK),當(dāng)被叫通道主控收到被叫用戶的180響應(yīng)后,更改被叫用戶的狀態(tài),“2>6”并且把信息寫入自己通道內(nèi)管道中,寫入成功后,這時(shí)交換線程的撥號(hào)應(yīng)用處理函數(shù)讀到用戶的180響應(yīng)后,調(diào)用主叫通道的控制狀態(tài)發(fā)送函數(shù),給主叫用戶發(fā)送一個(gè)180的響應(yīng),然后撥號(hào)應(yīng)用處理函數(shù)繼續(xù)等待被叫用戶的200OK響應(yīng),當(dāng)被叫通道主控收到被叫用戶的200OK的響應(yīng)后,同時(shí)由通道主控給被叫用戶ACK響應(yīng),然后更改被叫用戶的狀態(tài),“6>2”并且把信息寫入被通道的管道中,這時(shí)應(yīng)用處理函數(shù)讀到被叫用戶的200OK響應(yīng)后,調(diào)用主叫通道的應(yīng)答函數(shù)給主叫通道組織發(fā)送一個(gè)200OK的應(yīng)答,然后就開(kāi)始調(diào)用橋接函數(shù),來(lái)建立兩個(gè)通道的通話橋接,監(jiān)控兩端的rtp資源,并調(diào)用各自通道的rtp讀、寫函數(shù),由讀函數(shù)讀出本通道的語(yǔ)音數(shù)據(jù),返回給寫函數(shù),由寫函數(shù)來(lái)把語(yǔ)音數(shù)據(jù)發(fā)給自己的通道,語(yǔ)音的翻譯轉(zhuǎn)換工作由讀寫函數(shù)來(lái)調(diào)用完成,來(lái)完成兩個(gè)通道的語(yǔ)音轉(zhuǎn)換何傳輸,各個(gè)通道的語(yǔ)音讀寫函數(shù)在通道加載的時(shí)候,把各個(gè)函數(shù)的句柄加載入系統(tǒng),使兩個(gè)支持不同codec的客戶端可以互相正常通話,但是前提是,服務(wù)端必須能支持兩個(gè)客戶端的codec。如果任何一方掛機(jī)后,通道橋接結(jié)束,讓后由應(yīng)用處理函數(shù)調(diào)用掛機(jī)的另一方的通道掛機(jī)函數(shù),發(fā)送掛機(jī)信令,更改兩個(gè)用戶的系統(tǒng)狀態(tài),“2
>1”,釋放資源,交換進(jìn)程退出運(yùn)行,本次交換完成兩個(gè)codec之間轉(zhuǎn)換時(shí)間表以下所列舉的的codec是asterisk都支持的codec,表中所列的數(shù)字是對(duì)應(yīng)兩種codec系統(tǒng)在進(jìn)行編碼轉(zhuǎn)換的時(shí)候,需要的時(shí)間單位為毫秒,行中列舉的是源codec編碼,列中列舉的是要轉(zhuǎn)換的目的編碼:Translationtimesbetweenformats(inmilliseconds)SourceFormat(Rows)DestinationFormat(Columns)g723gsmulawalawg726adpcmslinlpc10g729speexilbcg723-----------gsm--222213--13ulaw-2-12213--13alaw-21-2213--13g726-222-213--13adpcm-2222-13--13slin-11111-2--12lpc10-222221---13g729-----------speex-----------ilbc-3333324---系統(tǒng)交互命令以下列舉的是asterisk系統(tǒng)可以支持和用戶交互的所有命令,及其命令的解釋,在系統(tǒng)啟動(dòng)后,當(dāng)出現(xiàn)“CLI>”這樣的提示時(shí),用戶就可以輸入一些系統(tǒng)支持的命令,交給系統(tǒng)去解析執(zhí)行:!ExecuteashellcommandaborthaltCancelarunninghaltaddextensionAddnewextensionintocontextaddignorepatAddnewignorepatternaddqueuememberAddachanneltoaspecifiedqueueaeldebugcontextsEnableAELcontextsdebugaeldebugmacrosEnableAELmacrosdebugaeldebugreadEnableAELreaddebugaeldebugtokensEnableAELtokensdebugaelnodebugDisableAELdebugmessagesaelreloadReloadAELconfigurationagentlogoffSetsanagentofflineagidebugEnableAGIdebuggingaginodebugDisableAGIdebugginganswerAnsweranincomingconsolecallautoanswerSets/displaysautoanswercdrstatusDisplaytheCDRstatusconsoleSets/displaysactiveconsoledatabasedelRemovesdatabasekey/valuedatabasedeltreeRemovesdatabasekeytree/valuesdatabasegetGetsdatabasevaluedatabaseputAdds/updatesdatabasevaluedatabaseshowShowsdatabasecontentsdatabaseshowkeyShowsdatabasecontentsdebugchannelEnabledebuggingonachanneldebuglevelSetglobaldebugleveldialDialanextensionontheconsolednsmgrreloadReloadstheDNSmanagerconfigurationdnsmgrstatusDisplaytheDNSmanagerstatusdontincludeRemoveaspecifiedincludefromcontextdumpagihtmlDumpsalistofagicommandinhtmlformatdundidebugEnableDUNDidebuggingdundiflushFlushDUNDicachedundilookupLookupanumberinDUNDidundinodebugDisableDUNDidebuggingdundinostorehistoryDisableDUNDihistoricrecordsdundiprecachePrecacheanumberinDUNDidundiqueryQueryaDUNDiEIDdundishowentityidDisplayGlobalEntityIDdundishowmappingsShowDUNDimappingsdundishowpeersShowdefinedDUNDipeersdundishowpeerShowinfoonaspecificDUNDipeerdundishowprecacheShowDUNDiprecachedundishowrequestsShowDUNDirequestsdundishowtransShowactiveDUNDitransactionsdundistorehistoryEnableDUNDihistoricrecordsextensionsreloadReloadextensionsand*only*extensionsfeatureshowchannelsShowstatusoffeaturechannelsflashFlashacallontheconsolegroupshowchannelsShowactivechannelswithgroup(s)hangupHangupacallontheconsolehelpDisplayhelplist,orspecifichelponacommandiax2debugEnableIAXdebuggingiax2jbdebugEnableIAXjitterbufferdebuggingiax2nodebugDisableIAXdebuggingiax2nojbdebugDisableIAXjitterbufferdebuggingiax2notrunkdebugDisableIAXtrunkdebuggingiax2provisionProvisionanIAXdeviceiax2prunerealtimePruneacachedrealtimelookupiax2reloadReloadIAXconfigurationiax2setjitterSetsIAXjitterbufferiax2showcacheDisplayIAXcacheddialplaniax2showchannelsShowactiveIAXchannelsiax2showfirmwareShowavailableIAXfirmwaresiax2shownetstatsShowactiveIAXchannelnetstatsiax2showpeerShowdetailsonspecificIAXpeeriax2showpeersShowdefinedIAXpeersiax2showprovisioningShowiaxprovisioningiax2showregistryShowIAXregistrationstatusiax2showstatsDisplayIAXstatisticsiax2showusersShowdefinedIAXusersiax2testlosspctSetIAX2incomingframelosspercentageiax2trunkdebugEnableIAXtrunkdebuggingincludecontextIncludecontextinothercontextindicationaddAddthegivenindicationtothecountryindicationremoveRemovethegivenindicationfromthecountryinitkeysInitializeRSAkeypasscodesloadLoadadynamicmodulebynamelocalshowchannelsShowstatusoflocalchannelsloggerreloadReopensthelogfilesloggerrotateRotatesandreopensthelogfilesloggershowchannelsListconfiguredlogchannelsmeetmeExecuteacommandonaconferenceorconfereemgcpauditendpointAuditspecifiedMGCPendpointmgcpdebugEnableMGCPdebuggingmgcpnodebugDisableMGCPdebuggingmgcpreloadReloadMGCPconfigurationmgcpshowendpointsShowdefinedMGCPendpointsmixmonitorExecuteaMixMonitorcommandmohclassesshowListMOHclassesmohfilesshowListMOHfile-basedclassesmohreloadMusicOnHoldmuteDisablemicinputnodebugchannelDisabledebuggingonachannelodbcconnectConnecttoODBCDSNodbcdisconnectDisconnectfromODBCDSNodbcshowShowODBCDSN(s)pridebugspanEnablesPRIdebuggingonaspanpriintensedebugspanEnablesREALLYINTENSEPRIdebuggingprinodebugspanDisablesPRIdebuggingonaspanprisetdebugfileSendsPRIdebugoutputtothespecifiedfileprishowdebugDisplayscurrentPRIdebugsettingsprishowspanDisplaysPRIInformationpriunsetdebugfileEndsPRIdebugoutputtofilerealtimeloadUsedtoprintoutRealTimevariables.realtimemysqlstatusShowsconnectioninformationfortheMySQLRealTimedriverrealtimeupdateUsedtoupdateRealTimevariables.reloadReloadconfigurationremoveextensionRemoveaspecifiedextensionremoveignorepatRemoveignorepatternfromcontextremovequeuememberRemovesachannelfromaspecifiedqueuerestartgracefullyRestartAsteriskgracefullyrestartnowRestartAsteriskimmediatelyrestartwhenconvenientRestartAsteriskatemptycallvolumertpdebugEnableRTPdebuggingrtpdebugipEnableRTPdebuggingonIPrtpnodebugDisableRTPdebuggingsavedialplanSavedialplansendtextSendtexttotheremotedevicesetdebugSetlevelofdebugchattinesssetverboseSetlevelofverbosenessshowagentsShowstatusofagentsshowagiShowAGIcommandsorspecifichelpshowapplicationsShowsregistereddialplanapplicationsshowapplicationDescribeaspecificdialplanapplicationshowaudiocodecsShowsaudiocodecsshowchannelDisplayinformationonaspecificchannelshowchannelsDisplayinformationonchannelsshowchanneltypesShowavailablechanneltypesshowcodecsShowscodecsshowcodecShowsaspecificcodecshowconferencesShowstatusofconferencesshowconfigmappingsShowConfigmappings(filenamestoconfigengines)showdialplanShowdialplanshowfeaturesListsconfiguredfeaturesshowfileformatsDisplaysfileformatsshowfunctionsShowsregistereddialplanfunctionsshowfunctionDescribeaspecificdialplanfunctionshowhintsShowdialplanhintsshowimagecodecsShowsimagecodecsshowimageformatsDisplaysimageformatsshowindicationsShowalistofallcountry/indicationsshowkeysDisplaysRSAkeyinformationshowlicenseShowthelicense(s)forthiscopyofAsteriskshowmanagercommandShowamanagerinterfacecommandshowmanagercommandsListmanagerinterfacecommandsshowmanagerconnectedShowconnectedmanagerinterfaceusersshowmodulesListmodulesandinfoshowmoduleslikeListmodulesandinfoshowparkedcallsListsparkedcallsshowqueueShowstatusofaspecifiedqueueshowqueuesShowstatusofqueuesshowswitchesShowalternativeswitchesshowtranslationDisplaytranslationmatrixshowuptimeShowuptimeinformationshowversionDisplayversioninfoshowversionfilesShowversionsoffilesusedtobuildAsteriskshowvideocodecsShowsvideocodecsshowvoicemailusersListdefinedvoicemailboxesshowvoicemailzonesListzonemessageformatsshowwarrantyShowthewarranty(ifany)forthiscopyofAsterisksipdebugEnableSIPdebuggingsipdebugipEnableSIPdebuggingonIPsipdebugpeerEnableSIPdebuggingonPeernamesiphistoryEnableSIPhistorysipnodebugDisableSIPdebuggingsipnohistoryDisableSIPhistorysipnotifySendanotifypackettoaSIPpeersipprunerealtimePrunecachedRealtimeobject(s)sipprunerealtimepeerPrunecachedRealtimepeer(s)sipprunerealtimeuserPrunecachedRealtimeuser(s)sipreloadReloadSIPconfigurationsipshowchannelsShowactiveSIPchannelssipshowchannelShowdetailedSIPchannelinfosipshowdomainsListourlocalSIPdomains.sipshowhistoryShowSIPdialoghistorysipshowinuseListallinuse/limitssipshowobjectsShowallSIPobjectallocationssipshowpeerShowdetailsonspecificSIPpeersipshowpeersShowdefinedSIPpeerssipshowregistryShowSIPregistrationstatussipshowsettingsShowSIPglobalsettingssipshowsubscriptionsShowactiveSIPsubscriptionssipshowusersShowdefinedSIPuserssipshowuserShowdetailsonspecificSIPuserskinnydebugEnableSkinnydebuggingskinnynodebugDisableSkinnydebuggingskinnyshowdevicesShowdefinedSkinnydevicesskinnyshowlinesShowdefinedSkinnylinesperdevicesofthangupRequestahanguponagivenchannelstopgracefullyGracefullyshutdownAsteriskstopnowShutdownAsteriskimmediatelystopwhenconvenientShutdownAsteriskatemptycallvolumetransferTransferacalltoadifferentextensionunloadUnloadadynamicmodulebynameunmuteEnablemicinputzapdestroychannelDestroyachannelzapshowcadencesListcadenceszapshowchannelsShowactivezapatachannelszapshowchannelShowinformationonachannelzapshowstatusShowallZaptelcardsstatus呼叫轉(zhuǎn)移在服務(wù)端配置實(shí)現(xiàn)呼叫轉(zhuǎn)移功能,呼叫轉(zhuǎn)移的配置實(shí)在extensions.conf配置文件中,配置用到的應(yīng)用DIAL應(yīng)用,且要在撥號(hào)參數(shù)中配置超時(shí),如果呼叫在超時(shí)之前被接聽(tīng),通道就被橋接,撥號(hào)方案完成,如果被叫地沒(méi)有應(yīng)答(包括掛機(jī)、不在線、呼叫超時(shí)),DIAL()會(huì)繼續(xù)到該extension的下一個(gè)priority。但是,如果被叫通道忙,DIAL()將轉(zhuǎn)到priorityn+101,如果存在的話,(其中的n是DIAL()被調(diào)用的priority),這樣我們就能夠以不同的方式處理未接聽(tīng)電話了,在測(cè)試的過(guò)程中,我用未來(lái)之路的例子怎么測(cè)試都不能轉(zhuǎn)到priorityn+101,都是轉(zhuǎn)到extension的下一個(gè)priority,換了另一種方法后,測(cè)試可以了,Extensions.conf的測(cè)試可以遇忙轉(zhuǎn)移的配置如下:exten=>1497,1,Dial(IAX2/1497,10)exten=>1497,2,Goto(s-${DIALSTATUS},1)exten=>s-CHANUNAVAIL,1,Dial(SIP/1499,10)(遇忙或者被叫掛機(jī)的狀態(tài))exten=>s-NOANSWER,1,Dial(SIP/1496,10)(被叫呼叫超時(shí)的狀態(tài))exten=>s-CONGESTION,1,Dial(SIP/1498,10)(被叫不在線的狀態(tài))遇忙不能轉(zhuǎn)移的配置:;exten=>1497,1,Dial(IAX2/1497,10);exten=>1497,2,Dial(SIP/1496,10);exten=>1497,3,Hangup;exten=>1497,102,Dial(SIP/1499,10);exten=>1497,103,Hangup呼叫停泊呼叫停泊(callparking)另一個(gè)方便的特性叫做“呼叫停泊(callparking)”。呼叫停泊允許你保持一個(gè)呼叫一段時(shí)間,因此你就能夠在另外一個(gè)extension下保持通話狀態(tài)。通話保持的參數(shù)是在feature.conf配置文件中的「general]部分控制?!竒eneral]一段包含了四個(gè)與呼叫停泊有關(guān)的設(shè)置:Parkext這是等待的extension的標(biāo)簽。一個(gè)呼叫傳遞到這個(gè)extension的時(shí)候,系統(tǒng)將告訴你呼叫停泊的位置。通過(guò)默認(rèn)設(shè)置,等待的extension號(hào)是700。Parkos這個(gè)選項(xiàng)定義了呼叫停泊的空位數(shù)目。例如,設(shè)置它從701到720,將創(chuàng)建20個(gè)等待位置,編號(hào)701到720。Context這是等待上下文(Context)的名字。你必須包含這個(gè)上下文才能等待呼叫。Parkingtime如果設(shè)置,這個(gè)選項(xiàng)控制一個(gè)呼叫能等待多長(zhǎng)時(shí)間。如果呼叫沒(méi)有在設(shè)定時(shí)間內(nèi)連接,extension將把呼叫停泊的這個(gè)呼叫回?fù)?。?dāng)你編輯過(guò)features.conf以后,你必須重新啟動(dòng)Asterisk,因?yàn)檫@個(gè)文件只有啟動(dòng)的時(shí)候才被讀取,執(zhí)行reload命令將不會(huì)讀這個(gè)文件。也要注意,你應(yīng)該確認(rèn):你正在Dial()應(yīng)用中使用t或者T的選項(xiàng)。因?yàn)槭褂谜咝枰獋鬟f呼叫到呼叫停泊的標(biāo)簽到extension。所以,我們創(chuàng)建一個(gè)簡(jiǎn)單的撥號(hào)方案,來(lái)演示呼叫停泊,如下:Features.conf配置文件配置內(nèi)容:[general]parkext=>700parkos=>701-720context=>parkedcallsparkingtime=>45extensions.conf配置文件配置內(nèi)容:Include=>parkedcallsexten=>103,1,Dial(SIP/1498,,T)為了說(shuō)明呼叫停泊是如何工作的,舉例如下:Alice訪問(wèn)系統(tǒng),然后撥號(hào)103來(lái)連接Bob,Bob接收來(lái)電,過(guò)了一會(huì),Bob傳遞這個(gè)呼叫到700,并告訴他從Alice來(lái)的呼叫已經(jīng)在701處等待。Bob在104呼叫Charlie,并告訴他Alice在701。Charlie撥打extension701,開(kāi)始和Alice通話。這是一個(gè)簡(jiǎn)單的方法在兩個(gè)用戶之間呼叫停泊的應(yīng)用。語(yǔ)音郵件在任何現(xiàn)代電話系統(tǒng)之中最流行的特征之一就是語(yǔ)音郵件,實(shí)事上,asterisk有一個(gè)非常靈活的語(yǔ)音郵件系統(tǒng)。語(yǔ)音郵件配置在配置文件voicemail.conf中配置和定義,這個(gè)文件包含語(yǔ)音郵件系統(tǒng)設(shè)置的分類,這樣就可以客戶化配置語(yǔ)音郵件系統(tǒng)到你想要的狀態(tài)。正像撥號(hào)方案上下文可以分別保持你的撥號(hào)方案的不同部分一樣,語(yǔ)音郵件的上下文允許從一個(gè)到另外一個(gè)郵箱,這就允許你可以為一個(gè)或者幾個(gè)公司或者辦公室在同一個(gè)服務(wù)器上配置不同的郵件設(shè)置,語(yǔ)音郵件的上下文和撥號(hào)方案的上下文的定義方法相同。創(chuàng)建郵箱Mailbox=>password,name,emailMailbox郵箱的號(hào)碼Password這是郵箱主人訪問(wèn)自己的語(yǔ)音郵箱的數(shù)字密碼,如果使用者改變了她的密碼,系統(tǒng)會(huì)在voicemail.conf中升級(jí)到相應(yīng)的字段。Name這是郵箱主人的名字。Email這是郵箱所有者的email地址,assterisk能發(fā)送語(yǔ)音郵件通知(包括語(yǔ)音郵件消息本身)到特定的郵箱。郵箱實(shí)例1498=>1498,huangbing,bb_jinlin@163.com增加語(yǔ)音郵件到撥號(hào)方案中我們?cè)试S主叫方在他們沒(méi)有接聽(tīng)電話時(shí)候,允許留下信息,為了實(shí)現(xiàn)這些,我們將使用VoiceMail()這個(gè)應(yīng)用,這個(gè)應(yīng)用將主叫方呼叫送到特定的郵箱,一次他能留下一個(gè)消息,郵箱應(yīng)該被指定為mailbox@context的形式,在這的context是語(yǔ)音郵箱的上下文,郵箱號(hào)碼前頭可以被加上u或者b,如果是字母b,主叫方將聽(tīng)到郵箱所有者忙音的消息,如果是字母u,主叫方將聽(tīng)到郵箱所有者的用戶不可用的消息(如果存在的話):exten=>1497,1,Dial(IAX2/1497,10,r)exten=>1497,2,Voicemail(u1498@default)exten=>1497,3,Hangupexten=>1497,102,Voicemail(b1498@default)exten=>1497,103,Hangup接收語(yǔ)音郵件用戶能夠檢索他們的語(yǔ)音郵件消息,改變他們的語(yǔ)音郵件選項(xiàng),以及通過(guò)使用voicemai1Main()應(yīng)用記錄他們的語(yǔ)音郵件問(wèn)候語(yǔ)。在它的典型情況中,voicemailMain()以無(wú)任何變量形式調(diào)用。我們?cè)黾觘xtension500到撥號(hào)方案的上下文中,為了內(nèi)部用戶能撥打500,根據(jù)語(yǔ)音提示輸入mailbox號(hào)碼和進(jìn)入mailbox的密碼,核實(shí)輸入正確后,用戶根據(jù)提示按下“1”鍵可以聽(tīng)留給自己的語(yǔ)音郵件,來(lái)訪問(wèn)他們的語(yǔ)音郵件的消息:exten=>500,1,VoicemailMain()語(yǔ)音會(huì)議我們使用MeetMe()應(yīng)用來(lái)設(shè)置一個(gè)語(yǔ)音的會(huì)議橋。這個(gè)應(yīng)用允許多個(gè)主叫方互相談話,就像他們?cè)谕粋€(gè)物理地點(diǎn)一樣。下面是一些主要的特性:在以前的傳統(tǒng)PBX中,這個(gè)功能很昂貴。要么你向撥入服務(wù)商掏一大筆錢,要么你不得不安裝一個(gè)昂貴的會(huì)議橋到你所有的PBx上去。創(chuàng)建密碼保護(hù)的會(huì)議.會(huì)議管理(將電話會(huì)場(chǎng)靜音、鎖定會(huì)議、斷開(kāi)某個(gè)參與者).允許一個(gè)人講話,其他的人安靜的可選項(xiàng)(常常用在公司的會(huì)議、廣播等情況).創(chuàng)建動(dòng)態(tài)或是靜態(tài)會(huì)議。我們?cè)O(shè)置一個(gè)基本會(huì)議室,MeetMe會(huì)議系統(tǒng)的配置項(xiàng)是在meetme.conf中。在配置文件內(nèi),你來(lái)定義會(huì)議室和進(jìn)入會(huì)議室的密碼。例如,我們?cè)O(shè)置一個(gè)extension為600的會(huì)議室。首先,我們將在meetme.conf中設(shè)置會(huì)議室,稱作600。而這次我們沒(méi)有設(shè)置密碼:[rooms}Conf=>600現(xiàn)在配置文件完成了,我們需要重啟Asterisk讓他能重新讀取meetme.conf文件。下一步,我們使用meetme()應(yīng)用,把支持會(huì)議室的特性增加到撥號(hào)方案中。MeetMe()有三個(gè)參數(shù):會(huì)議室的名字(定義在meetme.conf)、一組選項(xiàng)設(shè)置以及用戶加入會(huì)議的密碼。我們?cè)O(shè)置一個(gè)簡(jiǎn)單的會(huì)議室,房間是600,"i”可選項(xiàng)(通知用戶進(jìn)入和退出會(huì)議),密碼是54321:eXten=>600,l,MeetMe(600,i,54321)這就是全部。當(dāng)主叫方進(jìn)入extension600,密碼提示。如果正確輸入54321,他們將加入會(huì)議。另一個(gè)有用的程序是MeetMeCountO,如名所示,這個(gè)程序是用來(lái)計(jì)數(shù)一個(gè)會(huì)議室用戶數(shù)量的。Extensions.conf配置文件中的配置內(nèi)容:exten=>601,1,MeetMeCount(600,CONFCOUNT)exten=>601,2,GotoI
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版數(shù)學(xué)三年級(jí)上冊(cè)單元測(cè)試卷-第五單元-解決問(wèn)題的策略(含答案)-
- 2025年湖南吉利汽車職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案一套
- 2025年河南物流職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)匯編
- 2025年河北青年管理干部學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)參考答案
- 2024年H-系列卷材涂料項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年體育公園項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年河北女子職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 物理-云南省師范大學(xué)附屬中學(xué)2025屆高三下學(xué)期開(kāi)學(xué)考試試題和答案
- 第22課《智取生辰綱》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語(yǔ)文九年級(jí)上冊(cè)
- 汽車旅館裝修合同解除
- 六年級(jí)上冊(cè)英語(yǔ)教案-Culture 2 Going Green 第二課時(shí) 廣東開(kāi)心英語(yǔ)
- 警察叔叔是怎樣破案的演示文稿課件
- 青年教師個(gè)人成長(zhǎng)檔案
- 2021譯林版高中英語(yǔ)選擇性必修三課文翻譯
- 2022年華中科技大學(xué)博士研究生英語(yǔ)入學(xué)考試真題
- 《網(wǎng)店運(yùn)營(yíng)與管理》整本書電子教案全套教學(xué)教案
- 打印版 《固體物理教程》課后答案王矜奉
- CAD術(shù)語(yǔ)對(duì)照表
- 香港牛津新魔法Newmagic3AUnit4Mycalendar單元檢測(cè)試卷
- 中考《紅星照耀中國(guó)》各篇章練習(xí)題及答案(1-12)
- Q∕GDW 11612.43-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第4-3部分:應(yīng)用層通信協(xié)議
評(píng)論
0/150
提交評(píng)論