📄 megaco_call_flow_test.erl
字号:
Jit = ?PP("nt/jit", "40"), LCD2 = #'LocalControlDescriptor'{streamMode = sendRecv, propertyParms = [Jit]}, V = ?PP("v", "0"), C = ?PP("c", "IN IP4 $ "), M = ?PP("m", "audio $ RTP/AVP 4"), A = ?PP("a", "ptime:30"), LD2 = #'LocalRemoteDescriptor'{propGrps = [[V, C, M, A]]}, V2 = ?PP("v", "0"), C2 = ?PP("c", "IN IP4 124.124.124.222"), M2 = ?PP("m", "audio 2222 RTP/AVP 4"), RD2 = #'LocalRemoteDescriptor'{propGrps = [[V2, C2, M2]]}, Parms2 = #'StreamParms'{localControlDescriptor = LCD2, localDescriptor = LD2, remoteDescriptor = RD2}, StreamDesc2 = #'StreamDescriptor'{streamID = 1, streamParms = Parms2}, MediaDesc2 = #'MediaDescriptor'{streams = {multiStream, [StreamDesc2]}}, ChooseTid = #megaco_term_id{contains_wildcards = true, id = [[?megaco_choose]]}, AmmReq2 = #'AmmRequest'{terminationID = [ChooseTid], descriptors = [{mediaDescriptor, MediaDesc2}]}, CmdReq2 = #'CommandRequest'{command = {addReq, AmmReq2}}, request(Mid, 50003, ?megaco_choose_context_id, [CmdReq, CmdReq2]).%%----------------------------------------------------------------------%% 16. This is acknowledged. The stream port number is different from the%% control port number. In this case it is 1111 (in the SDP).%%%% MG2 to MGC:%% MEGACO/1 [124.124.124.222]:55555%% Reply = 50003 {%% Context = 5000 {%% Add = A5556{%% Media {%% Stream = 1 {%% Local {%% v=0%% c=IN IP4 125.125.125.111%% m=audio 1111 RTP/AVP 4%% }%% } ; RTP profile for G723 is 4%% }%% }%% }%% }%%----------------------------------------------------------------------msg16() -> msg16(?MG2_MID).msg16(Mid) -> V = ?PP("v", "0"), C = ?PP("c", "IN IP4 125.125.125.111"), M = ?PP("m", "audio 1111 RTP/AVP 4"), LD = #'LocalRemoteDescriptor'{propGrps = [[V, C, M]]}, Parms = #'StreamParms'{localDescriptor = LD}, StreamDesc = #'StreamDescriptor'{streamID = 1, streamParms = Parms}, MediaDesc = #'MediaDescriptor'{streams = {multiStream, [StreamDesc]}}, Reply = #'AmmsReply'{terminationID = [#megaco_term_id{id = ?A5556}], terminationAudit = [{mediaDescriptor, MediaDesc}]}, reply(Mid, 50003, 5000, [{addReply, Reply}]).%%----------------------------------------------------------------------%% 17. The above IPAddr and UDPport need to be given to MG1 now.%%%% MGC to MG1:%% MEGACO/1 [123.123.123.4]:55555%% Transaction = 10005 {%% Context = 2000 {%% Modify = A4444 {%% Signals {cg/rt}%% },%% Modify = A4445 {%% Media {%% Stream = 1 {%% Remote {%% v=0%% c=IN IP4 125.125.125.111%% m=audio 1111 RTP/AVP 4%% }%% } ; RTP profile for G723 is 4%% }%% }%% }%% }%%----------------------------------------------------------------------msg17a() -> msg17a(?MGC_MID).msg17a(Mid) -> Signal = #'Signal'{signalName = "cg/rt", sigParList = []}, AmmReq = #'AmmRequest'{terminationID = [#megaco_term_id{id = ?A4444}], descriptors = [{signalsDescriptor, [{signal, Signal}]}]}, CmdReq = #'CommandRequest'{command = {modReq, AmmReq}}, V = ?PP("v", "0"), C = ?PP("c", "IN IP4 125.125.125.111"), M = ?PP("m", "audio 1111 RTP/AVP 4"), RD2 = #'LocalRemoteDescriptor'{propGrps = [[V, C, M]]}, Parms2 = #'StreamParms'{remoteDescriptor = RD2}, StreamDesc2 = #'StreamDescriptor'{streamID = 1, streamParms = Parms2}, MediaDesc2 = #'MediaDescriptor'{streams = {multiStream, [StreamDesc2]}}, AmmReq2 = #'AmmRequest'{terminationID = [#megaco_term_id{id = ?A4445}], descriptors = [{mediaDescriptor, MediaDesc2}]}, CmdReq2 = #'CommandRequest'{command = {modReq, AmmReq2}}, request(Mid, 10005, 2000, [CmdReq, CmdReq2]).%%----------------------------------------------------------------------%% MG1 to MGC:%% MEGACO/1 [124.124.124.222]:55555%% Reply = 10005 {%% Context = 2000 {Modify = A4444, Modify = A4445}%% }%%----------------------------------------------------------------------msg17b() -> msg17b(?MG1_MID).msg17b(Mid) -> Reply = #'AmmsReply'{terminationID = [#megaco_term_id{id = ?A4444}]}, Reply2 = #'AmmsReply'{terminationID = [#megaco_term_id{id = ?A4445}]}, reply(Mid, 10005, 2000, [{modReply, Reply}, {modReply, Reply2}]).%%----------------------------------------------------------------------%% 18. The two gateways are now connected and User 1 hears the%% RingBack. The MG2 now waits until User2 picks up the receiver and%% then the two-way call is established.%%%% MG2 to MGC:%% MEGACO/1 [125.125.125.111]:55555%% Transaction = 50005 {%% Context = 5000 {%% Notify = A5555 {ObservedEvents =1234 {%% 19990729T22020002:al/of}}%% }%% }%%----------------------------------------------------------------------msg18a() -> msg18a(?MG2_MID).msg18a(Mid) -> TimeStamp = #'TimeNotation'{date = "19990729", time = "22020002"}, Event = #'ObservedEvent'{eventName = "al/of", timeNotation = TimeStamp, eventParList = []}, Desc = #'ObservedEventsDescriptor'{requestId = 1234, observedEventLst = [Event]}, NotifyReq = #'NotifyRequest'{terminationID = [#megaco_term_id{id = ?A5555}], observedEventsDescriptor = Desc}, CmdReq = #'CommandRequest'{command = {notifyReq, NotifyReq}}, request(Mid, 50005, 5000, [CmdReq]).%%----------------------------------------------------------------------%% MGC to MG2:%% MEGACO/1 [123.123.123.4]:55555%% Reply = 50005 {%% Context = - {Notify = A5555}%% }%%----------------------------------------------------------------------msg18b() -> msg18b(?MGC_MID).msg18b(Mid) -> Reply = #'NotifyReply'{terminationID = [#megaco_term_id{id = ?A5555}]}, reply(Mid, 50005, ?megaco_null_context_id, [{notifyReply, Reply}]).%%----------------------------------------------------------------------%% MGC to MG2:%% MEGACO/1 [123.123.123.4]:55555%% Transaction = 50006 {%% Context = 5000 {%% Modify = A5555 {%% Events = 1235 {al/on},%% Signals { } ; to turn off ringing%% }%% }%% }%%----------------------------------------------------------------------msg18c() -> msg18c(?MGC_MID).msg18c(Mid) -> On = #'RequestedEvent'{pkgdName = "al/on", evParList = []}, EventsDesc = #'EventsDescriptor'{requestID = 1235, eventList = [On]}, AmmReq = #'AmmRequest'{terminationID = [#megaco_term_id{id = ?A5555}], descriptors = [{eventsDescriptor, EventsDesc}, {signalsDescriptor, []}]}, CmdReq = #'CommandRequest'{command = {modReq, AmmReq}}, request(Mid, 50006, 5000, [CmdReq]).%%----------------------------------------------------------------------%% MG2 to MGC:%% MEGACO/1 [125.125.125.111]:55555%% Reply = 50006 {%% Context = 5000 {Modify = A4445}%% }%%----------------------------------------------------------------------msg18d() -> msg18d(?MG2_MID).msg18d(Mid) -> Reply = #'AmmsReply'{terminationID = [#megaco_term_id{id = ?A4445}]}, reply(Mid, 50006, 5000, [{modReply, Reply}]).%%----------------------------------------------------------------------%% 19. Change mode on MG1 to SendReceive, and stop the ringback.%%%% MGC to MG1:%% MEGACO/1 [123.123.123.4]:55555%% Transaction = 10006 {%% Context = 2000 {%% Modify = A4445 {%% Media {%% Stream = 1 {%% LocalControl {%% Mode=SendReceive%% }%% }%% }%% },%% Modify = A4444 {%% Signals { }%% }%% }%% }%%----------------------------------------------------------------------msg19a() -> msg19a(?MGC_MID).msg19a(Mid) -> LCD = #'LocalControlDescriptor'{streamMode = sendRecv, propertyParms = []}, Parms = #'StreamParms'{localControlDescriptor = LCD}, StreamDesc = #'StreamDescriptor'{streamID = 1, streamParms = Parms}, MediaDesc = #'MediaDescriptor'{streams = {multiStream, [StreamDesc]}}, AmmReq = #'AmmRequest'{terminationID = [#megaco_term_id{id = ?A4445}], descriptors = [{mediaDescriptor, MediaDesc}]}, CmdReq = #'CommandRequest'{command = {modReq, AmmReq}}, AmmReq2 = #'AmmRequest'{terminationID = [#megaco_term_id{id = ?A4444}], descriptors = [{signalsDescriptor, []}]}, CmdReq2 = #'CommandRequest'{command = {modReq, AmmReq2}}, request(Mid, 10006, 2000, [CmdReq, CmdReq2]).%%----------------------------------------------------------------------%% MG1 to MGC:%% MEGACO/1 [124.124.124.222]:55555%% Reply = 10006 {%% Context = 2000 {Modify = A4445, Modify = A4444}}%%----------------------------------------------------------------------msg19b() -> msg19b(?MG1_MID).msg19b(Mid) -> Reply = #'AmmsReply'{terminationID = [#megaco_term_id{id = ?A4445}]}, Reply2= #'AmmsReply'{terminationID = [#megaco_term_id{id = ?A4444}]}, reply(Mid, 10006, 2000, [{modReply, Reply}, {modReply, Reply2}]).%%----------------------------------------------------------------------%% 20. The MGC decides to Audit the RTP termination on MG2.%%%% MEGACO/1 [123.123.123.4]:55555%% Transaction = 50007 {%% Context = - {AuditValue = A5556{%% Audit{Media, DigitMap, Events, Signals, Packages, Statistics }}%% }%% }%%----------------------------------------------------------------------msg20() -> msg20(?MGC_MID).msg20(Mid) -> Tokens = [mediaToken, eventsToken, signalsToken, digitMapToken, statsToken, packagesToken], AuditDesc = #'AuditDescriptor'{auditToken = Tokens}, Req = #'AuditRequest'{terminationID = #megaco_term_id{id = ?A5556}, auditDescriptor = AuditDesc}, CmdReq = #'CommandRequest'{command = {auditValueRequest, Req}}, request(Mid, 50007, ?megaco_null_context_id, [CmdReq]).%%----------------------------------------------------------------------%% 21. The MG2 replies. An RTP termination has no events nor signals, so%% these are left out in the reply .%%%% MEGACO/1 [125.125.125.111]:55555%% Reply = 50007 {%% Context = - {%% AuditValue = A5556 {%% Media {%% Stream = 1 {%% LocalControl { Mode = SendReceive,%% nt/jit=40 },%% Local {%% v=0%% c=IN IP4 125.125.125.111%% m=audio 1111 RTP/AVP 4%% a=ptime:30%% },%% Remote {%% v=0%% c=IN IP4 124.124.124.222%% m=audio 2222 RTP/AVP 4%% a=ptime:30%% } } },%% Packages {nt-1, rtp-1},%% Statistics { rtp/ps=1200, ; packets sent%% nt/os=62300, ; octets sent%% rtp/pr=700, ; packets received%% nt/or=45100, ; octets received%% rtp/pl=0.2, ; % packet loss%% rtp/jit=20,%% rtp/delay=40 } ; avg latency%% }%% }%% }%%----------------------------------------------------------------------msg21() -> msg21(?MG2_MID).msg21(Mid) -> Jit = ?PP("nt/jit", "40"), LCD = #'LocalControlDescriptor'{streamMode = sendRecv, propertyParms = [Jit]}, LDV = ?PP("v", "0"), LDC = ?PP("c", "IN IP4 125.125.125.111"), LDM = ?PP("m", "audio 1111 RTP/AVP 4"), LDA = ?PP("a", "ptime:30"), LD = #'LocalRemoteDescriptor'{propGrps = [[LDV, LDC, LDM, LDA]]}, RDV = ?PP("v", "0"), RDC = ?PP("c", "IN IP4 124.124.124.222"), RDM = ?PP("m", "audio 2222 RTP/AVP 4"), RDA = ?PP("a", "ptime:30"), RD = #'LocalRemoteDescriptor'{propGrps = [[RDV, RDC, RDM, RDA]]}, StreamParms = #'StreamParms'{localControlDescriptor = LCD, localDescriptor = LD, remoteDescriptor = RD}, StreamDesc = #'StreamDescriptor'{streamID = 1, streamParms = StreamParms}, Media = #'MediaDescriptor'{streams = {multiStream, [StreamDesc]}}, PackagesItem = #'PackagesItem'{packageName = "nt", packageVersion = 1}, PackagesItem2 = #'PackagesItem'{packageName = "rtp", packageVersion = 1}, Stat = ?SP("rtp/ps","1200"), Stat2 = ?SP("nt/os","62300"), Stat3 = ?SP("rtp/pr","700"), Stat4 = ?SP("nt/or","45100"), Stat5 = ?SP("rtp/pl","0.2"), Stat6 = ?SP("rtp/jit","20"),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -