Hello,<br><br> I currently have an openser server running on port 5060, and a second that handles voicemail / stateful transaction stuff on port 5070. So, I am having proxy A forward to proxy B to do the handling which are both on the same server, although there seems to be a problem with NAT'ing, when I call 'voicemail' or something I can not hear anything. It seems to be because it is sending the RTP data to the wrong location? It should be sending it back to public-ip-addr-1 when it is sending to an internal ip address
192.168.1.*<br><br>Here is the log from sems:<br>101<br>44811:1466724767<br><sip:public-ip-addr-1:5060;nat=yes;ftag=dd9bbf561d35ee06o0;lr=on><br>sip:public-ip-addr-1:5060;nat=yes;ftag=dd9bbf561d35ee06o0;lr=on<br>P-MsgFlags: 0
<br>UA: Linksys/PAP2-3.1.9(LSa)<br>P-Email-Address: <a href="mailto:test@test.com">test@test.com</a><br>.<br>v=0<br>o=- 9200357 9200357 IN IP4 <a href="http://192.168.1.241">192.168.1.241</a><br>s=-<br>c=IN IP4 <a href="http://192.168.1.241">
192.168.1.241</a><br>t=0 0<br>m=audio 16420 RTP/AVP 0 2 4 8 18 96 97 98 100 101<br>a=rtpmap:0 PCMU/8000<br>a=rtpmap:2 G726-32/8000<br>a=rtpmap:4 G723/8000<br>a=rtpmap:8 PCMA/8000<br>a=rtpmap:18 G729a/8000<br>a=rtpmap:96 G726-40/8000
<br>a=rtpmap:97 G726-24/8000<br>a=rtpmap:98 G726-16/8000<br>a=rtpmap:100 NSE/8000<br>a=rtpmap:101 telephone-event/8000<br>a=fmtp:101 0-15<br>a=ptime:30<br>a=sendrecv<br>><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp
:99): req.method = <INVITE><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:100): req.user = <115><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:101): req.domain = <public-ip-addr-1><br>(7856) DEBUG: execute (
AmInterfaceHandler.cpp:102): req.dstip = <public-ip-addr-1><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:103): req.port = <5070><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:104): req.r_uri = <sip:115@public-ip-addr-1
:5070><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:105): req.from_uri = <sip:1000@192.168.1.241:5060><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:106): req.from = <Brandon1 <<a href="mailto:sip:1000@test.mydomain.com">
sip:1000@test.mydomain.com</a>>><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:107): <a href="http://req.to">req.to</a> = <<<a href="mailto:sip:115@test.mydomain.com">sip:115@test.mydomain.com</a>>><br>
(7856) DEBUG: execute (AmInterfaceHandler.cpp:108): req.callid = <<a href="mailto:81e2d596-978fccc6@192.168.1.241">81e2d596-978fccc6@192.168.1.241</a>><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:109): req.from_tag
= <dd9bbf561d35ee06o0><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:110): req.to_tag = <><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:113): cseq_str = <101><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp
:119): cseq = <101>(101)<br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:121): req.key = <44811:1466724767><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:122): req.route = <<sip:public-ip-addr-1:5060;nat=yes;ftag=dd9bbf561d35ee06o0;lr=on>>
<br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:123): req.next_hop = <sip:public-ip-addr-1:5060;nat=yes;ftag=dd9bbf561d35ee06o0;lr=on><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:128): hdrs = <P-MsgFlags: 0
<br>UA: Linksys/PAP2-3.1.9(LSa)<br>P-Email-Address: <a href="mailto:test@test.com">test@test.com</a><br>><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:133): body = <v=0<br>o=- 9200357 9200357 IN IP4 <a href="http://192.168.1.241">
192.168.1.241</a><br>s=-<br>c=IN IP4 <a href="http://192.168.1.241">192.168.1.241</a><br>t=0 0<br>m=audio 16420 RTP/AVP 0 2 4 8 18 96 97 98 100 101<br>a=rtpmap:0 PCMU/8000<br>a=rtpmap:2 G726-32/8000<br>a=rtpmap:4 G723/8000
<br>a=rtpmap:8 PCMA/8000<br>a=rtpmap:18 G729a/8000<br>a=rtpmap:96 G726-40/8000<br>a=rtpmap:97 G726-24/8000<br>a=rtpmap:98 G726-16/8000<br>a=rtpmap:100 NSE/8000<br>a=rtpmap:101 telephone-event/8000<br>a=fmtp:101 0-15<br>a=ptime:30
<br>a=sendrecv<br>><br>(7856) DEBUG: execute (AmInterfaceHandler.cpp:144): Request OK: dispatch it!<br>(7856) DEBUG: postEvent (AmEventQueue.cpp:48): AmEventQueue: trying to post event<br>(7856) DEBUG: postEvent (AmEventQueue.cpp
:56): AmEventQueue: event posted<br>(7856) DEBUG: processEvents (AmEventQueue.cpp:69): before processing event<br>(7856) DEBUG: process (AmSession.cpp:421): AmSession::process<br>(7856) DEBUG: process (AmSession.cpp:425): Session received SIP Event
<br>(7856) DEBUG: onSipRequest (AmSession.cpp:472): onSipRequest: method = INVITE<br>(7856) DEBUG: parse_sdp_media (AmSdp.cpp:632): next_line=<a=rtpmap:0 PCMU/8000<br>a=rtpmap:2 G726-32/8000<br>a=rtpmap:4 G723/8000<br>
a=rtpmap:8 PCMA/8000<br>a=rtpmap:18 G729a/8000<br>a=rtpmap:96 G726-40/8000<br>a=rtpmap:97 G726-24/8000<br>a=rtpmap:98 G726-16/8000<br>a=rtpmap:100 NSE/8000<br>a=rtpmap:101 telephone-event/8000<br>a=fmtp:101 0-15<br>a=ptime:30
<br>a=sendrecv<br>><br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:0 PCMU/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=0; enc=PCMU; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:2 G726-32/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=2; enc=G726-32; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:4 G723/8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=4; enc=G723; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:8 PCMA/8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:693): sdp attribute: pt=8; enc=PCMA; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:18 G729a/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=18; enc=G729a; cr=8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:96 G726-40/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=96; enc=G726-40; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:97 G726-24/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=97; enc=G726-24; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:98 G726-16/8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=98; enc=G726-16; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:100 NSE/8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:693): sdp attribute: pt=100; enc=NSE; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:101 telephone-event/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=101; enc=telephone-event; cr=8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=fmtp:101 0-15<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=ptime:30<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp
:740): unknown attribute definition 'ptime:30'<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=sendrecv<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:745): flag definition is not yet supported (sendrecv)
<br>(7856) DEBUG: parse_sdp_media (AmSdp.cpp:651): ret=0; next_line=<><br>(7856) DEBUG: getCompatiblePayload (AmSdp.cpp:341): payload found: 0/PCMU/8000<br>(7856) DEBUG: getCompatiblePayload (AmSdp.cpp:344): using global address:
<a href="http://192.168.1.241">192.168.1.241</a><br>(7856) DEBUG: negotiate (AmSession.cpp:247): remote party supports telephone events (pt=101)<br>(7856) DEBUG: setRAddr (AmRtpStream.cpp:346): RTP remote address set to <a href="http://192.168.1.241:16420">
192.168.1.241:16420</a><br>(7856) DEBUG: init (AmRtpAudio.cpp:146): AmRtpAudio::init(...)<br>(7856) DEBUG: acceptAudio (AmSession.cpp:607): Sending Rtp data to <a href="http://192.168.1.241/16420">192.168.1.241/16420</a><br>
(7856) DEBUG: updateStatusReply (AmSipDialog.cpp:86): reply: transaction found!<br>(7856) DEBUG: updateStatusReply (AmSipDialog.cpp:125): req.method = INVITE; t.method = INVITE<br>(7856) DEBUG: init (AmCtrlInterface.cpp:231): AmUnixCtrlInterface::init @ /tmp/5D08F0A1-4552226600080041-08108600
<br>(7856) DEBUG: write_to_socket (AmUtils.cpp:588): sending: <:t_reply:/tmp/5D08F0A1-4552226600080041-08108600<br>200<br>OK<br>44811:1466724766<br>193812C5-45522256000F0C97-08103000<br>Contact: <sip:115@public-ip-addr-1
:5070><br>Content-Type: application/sdp<br>.<br>v=0<br>o=username 0 0 IN IP4 public-ip-addr-1<br>s=session<br>c=IN IP4 public-ip-addr-1<br>t=0 0<br>m=audio 10022 RTP/AVP 0 101<br>a=rtpmap:0 PCMU/8000<br>a=rtpmap:101 telephone-event/8000
<br>a=fmtp:101 0-15<br>.<br><br>><br>(7856) DEBUG: write_to_socket (AmUtils.cpp:614): write to unix socket: completed<br>(7856) DEBUG: cacheMsg (AmCtrlInterface.cpp:186): recv-ed: <200 Succeeded><br>(7856) DEBUG: processEvents (
AmEventQueue.cpp:71): event processed<br>(7856) DEBUG: processEvents (AmEventQueue.cpp:69): before processing event<br>(7856) DEBUG: process (AmSession.cpp:421): AmSession::process<br>(7856) DEBUG: process (AmSession.cpp:425): Session received SIP Event
<br>(7856) DEBUG: onSipRequest (AmSession.cpp:472): onSipRequest: method = INVITE<br>(7856) DEBUG: parse_sdp_media (AmSdp.cpp:632): next_line=<a=rtpmap:0 PCMU/8000<br>a=rtpmap:2 G726-32/8000<br>a=rtpmap:4 G723/8000<br>
a=rtpmap:8 PCMA/8000<br>a=rtpmap:18 G729a/8000<br>a=rtpmap:96 G726-40/8000<br>a=rtpmap:97 G726-24/8000<br>a=rtpmap:98 G726-16/8000<br>a=rtpmap:100 NSE/8000<br>a=rtpmap:101 telephone-event/8000<br>a=fmtp:101 0-15<br>a=ptime:30
<br>a=sendrecv<br>><br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:0 PCMU/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=0; enc=PCMU; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:2 G726-32/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=2; enc=G726-32; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:4 G723/8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=4; enc=G723; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:8 PCMA/8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:693): sdp attribute: pt=8; enc=PCMA; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:18 G729a/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=18; enc=G729a; cr=8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:96 G726-40/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=96; enc=G726-40; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:97 G726-24/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=97; enc=G726-24; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:98 G726-16/8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=98; enc=G726-16; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:100 NSE/8000<br>(7856) DEBUG: parse_sdp_attribute (
AmSdp.cpp:693): sdp attribute: pt=100; enc=NSE; cr=8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=rtpmap:101 telephone-event/8000<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:693): sdp attribute: pt=101; enc=telephone-event; cr=8000
<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=fmtp:101 0-15<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=ptime:30<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp
:740): unknown attribute definition 'ptime:30'<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:658): parse_sdp_attribute: s=sendrecv<br>(7856) DEBUG: parse_sdp_attribute (AmSdp.cpp:745): flag definition is not yet supported (sendrecv)
<br>(7856) DEBUG: parse_sdp_media (AmSdp.cpp:651): ret=0; next_line=<><br>(7856) DEBUG: getCompatiblePayload (AmSdp.cpp:341): payload found: 0/PCMU/8000<br>(7856) DEBUG: getCompatiblePayload (AmSdp.cpp:344): using global address:
<a href="http://192.168.1.241">192.168.1.241</a><br>(7856) DEBUG: negotiate (AmSession.cpp:247): remote party supports telephone events (pt=101)<br>(7856) DEBUG: setRAddr (AmRtpStream.cpp:346): RTP remote address set to <a href="http://192.168.1.241:16420">
192.168.1.241:16420</a><br>(7856) DEBUG: init (AmRtpAudio.cpp:146): AmRtpAudio::init(...)<br>(7856) DEBUG: acceptAudio (AmSession.cpp:607): Sending Rtp data to <a href="http://192.168.1.241/16420">192.168.1.241/16420</a><br>
(7856) DEBUG: updateStatusReply (AmSipDialog.cpp:86): reply: transaction found!<br>(7856) DEBUG: updateStatusReply (AmSipDialog.cpp:125): req.method = INVITE; t.method = INVITE<br>(7856) DEBUG: init (AmCtrlInterface.cpp:231): AmUnixCtrlInterface::init @ /tmp/75EE09BE-4552226600080514-08108600
<br>(7856) DEBUG: write_to_socket (AmUtils.cpp:588): sending: <:t_reply:/tmp/75EE09BE-4552226600080514-08108600<br>200<br>OK<br>44811:1466724767<br>193812C5-45522256000F0C97-08103000<br>Contact: <sip:115@public-ip-addr-1
:5070><br>Content-Type: application/sdp<br>.<br>v=0<br>o=username 0 0 IN IP4 public-ip-addr-1<br>s=session<br>c=IN IP4 public-ip-addr-1<br>t=0 0<br>m=audio 10022 RTP/AVP 0 101<br>a=rtpmap:0 PCMU/8000<br>a=rtpmap:101 telephone-event/8000
<br>a=fmtp:101 0-15<br>.<br><br>><br>(7856) DEBUG: write_to_socket (AmUtils.cpp:614): write to unix socket: completed<br>(7856) DEBUG: cacheMsg (AmCtrlInterface.cpp:186): recv-ed: <200 Succeeded><br>(7856) DEBUG: processEvents (
AmEventQueue.cpp:71): event processed<br>(7856) DEBUG: run (AmSession.cpp:292): <a href="mailto:81e2d596-978fccc6@192.168.1.241">81e2d596-978fccc6@192.168.1.241</a> dlg.getUACTransPending() = 0<br><br><br>Here is my config for "proxy B" the transaction handling with SEMS that "proxy A" sends to:
<br>#<br># $Id: ser.cfg,v <a href="http://1.25.2.1">1.25.2.1</a> 2005/02/18 14:30:44 andrei Exp $<br>#<br># ser for sems configuration<br><br># ----------- global configuration parameters ------------------------<br><br>debug=3 # debug level (cmd line: -dddddddddd)
<br>fork=yes<br>log_stderror=yes # (cmd line: -E)<br><br>check_via=no # (cmd. line: -v)<br>dns=no # (cmd. line: -r)<br>rev_dns=no # (cmd. line: -R)<br>port=5070<br>children=4<br><br>unix_sock="/tmp/openser_sems_sock"
<br># ------------------ module loading ----------------------------------<br><br>mpath="/usr/local/lib/openser/modules"<br><br>loadmodule "sl.so"<br>loadmodule "tm.so"<br>loadmodule "rr.so
"<br>loadmodule "maxfwd.so"<br>loadmodule "textops.so"<br>loadmodule "avpops.so"<br># ----------------- setting module-specific parameters ---------------<br><br># add value to ;lr param to make some broken UAs happy
<br>modparam("rr", "enable_full_lr", 1)<br>modparam("avpops", "avp_aliases", "email=i:67")<br>modparam("tm", "pass_provisional_replies", 1)<br># appends for INVITE to voicemail
<br>modparam("tm", "tw_append", "voicemail_headers:UA=$hdr(User-Agent);P-Email-Address=$avp(s:email)")<br><br># appends for dtmf per INFO<br>modparam("tm", "tw_append", "info_append:Content-Length=$hdr(Content-Length);Content-Type=$hdr(Content-Type);$rb")
<br><br># main routing logic<br><br>route{<br><br> # initial sanity checks -- messages with<br> # max_forwards==0, or excessively long requests<br> if (!mf_process_maxfwd_header("10")) {<br>
sl_send_reply("483","Too Many Hops");<br> return;<br> };<br> if (msg:len >= 2048 ) {<br> sl_send_reply("513", "Message too big");
<br> return;<br> };<br><br> if (method != "ACK" && method != "INVITE" && method != "BYE"<br> && method != "CANCEL" && method != "INFO" ){
<br> log("unsupported method\n");<br> sl_send_reply("500","unsupported method");<br> return;<br> }<br> # we record-route all messages -- to make sure that
<br> # subsequent messages will go through our proxy; that's<br> # particularly good if upstream and downstream entities<br> # use different transport protocol<br> record_route();<br><br> # subsequent messages withing a dialog should take the
<br> # path determined by record-routing<br> # make transaction<br> if (loose_route()) {<br> # mark routing logic in request<br> append_hf("P-hint: rr-enforced\r\n");
<br> if (!t_relay()) {<br> sl_reply_error();<br> }<br> return;<br> };<br><br> if (!t_newtran()){<br> log("could not create transaction\n");
<br> sl_send_reply("500","could not create transaction");<br> return;<br> }<br><br> # actively absorb ACKs<br> if (method == "ACK") {<br> t_relay();
<br> return;<br> }<br><br> # pass INFO to SEMS<br> if (method=="INFO") {<br> if(!t_write_unix("/tmp/sems_sock","sems/info_append")){<br> log("could not contact sems\n");
<br> t_reply("500","could not contact media server");<br> }<br> }<br><br> if (uri =~ "sip:101.*@") {<br> if (!t_write_unix("/tmp/sems_sock","myapp")){
<br> log("could not contact media server\n");<br> t_reply("500","could not contact media server");<br> return;<br> }
<br> return;<br> }<br><br> if (uri =~ "sip:102.*@") {<br> if (!t_write_unix("/tmp/sems_sock","myconfigurableapp")){<br> log("could not contact media server\n");
<br> t_reply("500","could not contact media server");<br> return;<br> }<br> return;<br> }<br><br> if (uri =~ "sip:103.*@") {
<br> if (!t_write_unix("/tmp/sems_sock","myannounceapp")){<br> log("could not contact media server\n");<br> t_reply("500","could not contact media server");
<br> return;<br> }<br> return;<br> }<br><br><br> if (uri =~ "sip:104.*@") {<br> if (!t_write_unix("/tmp/sems_sock","myjukebox")){
<br> log("could not contact media server\n");<br> t_reply("500","could not contact media server");<br> return;<br> }
<br> return;<br> }<br><br><br> if (uri =~ "sip:105.*@") {<br> if (!t_write_unix("/tmp/sems_sock","mycc")){<br> log("could not contact media server\n");
<br> t_reply("500","could not contact media server");<br> return;<br> }<br> return;<br> }<br><br><br> if (uri =~ "sip:106.*@") {
<br> if (!t_write_unix("/tmp/sems_sock","ivr_announce")){<br> log("could not contact media server\n");<br> t_reply("500","could not contact media server");
<br> return;<br> }<br> return;<br> }<br><br><br><br><br><br><br>############ default sems apps<br> if (uri =~ "sip:110.*@") {<br> if (!t_write_unix("/tmp/sems_sock","echo")){
<br> log("could not contact echo\n");<br> t_reply("500","could not contact media server");<br> return;<br> }
<br> return;<br> }<br><br><br> if (uri =~ "sip:111.*@") {<br> if (!t_write_unix("/tmp/sems_sock","announcement")){<br> log("could not contact announcement\n");
<br> t_reply("500","could not contact media server");<br> return;<br> }<br> return;<br> }<br><br> if (uri =~ "sip:112.*@") {
<br> if (!t_write_unix("/tmp/sems_sock","conference")){<br> log("could not contact conference\n");<br> t_reply("500","could not contact media server");
<br> return;<br> }<br> return;<br> }<br><br><br> if (uri =~ "sip:113.*@") {<br> if (!t_write_unix("/tmp/sems_sock","mailbox")){
<br> log("could not contact mailbox\n");<br> t_reply("500","could not contact media server");<br> return;<br> }
<br> return;<br> }<br><br> if (uri =~ "sip:114.*@") {<br> if (!t_write_unix("/tmp/sems_sock","early_announce")){<br> log("could not contact early_announce\n");
<br> t_reply("500","could not contact media server");<br> return;<br> }<br> return;<br> }<br><br> if (uri =~ "sip:115.*@") {
<br> # load email avp with some email address<br> avp_write("<a href="mailto:test@test.com">test@test.com</a>","$avp(s:email)");<br> # use voicemail_headers append to pass it to sems
<br> if (!t_write_unix("/tmp/sems_sock","voicemail/voicemail_headers")){<br> log("could not contact voicemail\n");<br> t_reply("500","could not contact media server");
<br> return;<br> }<br> return;<br> }<br><br><br> t_reply("404","Not found");<br>}<br clear="all"><br><br>Thank you, any and all help is appreciated, thanks again!
<br>-- <br>Brandon Armstead