⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 megaco_call_flow_test.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 5 页
字号:
    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 + -