I configured an ENUM Server on localhost which seems to work:
# dig @localhost 1.7.6.5.4.3.2.1.5.5.5.1.localhost NAPTR
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @localhost 1.7.6.5.4.3.2.1.5.5.5.1.localhost NAPTR
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32594
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;1.7.6.5.4.3.2.1.5.5.5.1.localhost. IN NAPTR
;; ANSWER SECTION:
1.7.6.5.4.3.2.1.5.5.5.1.localhost. 86400 IN NAPTR 10 100 “u” “E2U+sip” “!^.*$!sip:[email protected]!” .
;; AUTHORITY SECTION:
localhost. 86400 IN NS ns.localhost.
;; ADDITIONAL SECTION:
ns.localhost. 43200 IN A 192.168.125.209
;; Query time: 5 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 16 16:30:32 2012
;; MSG SIZE rcvd: 151
I then edited my /var/lib/asterisk/agi-bin/enumlookup.agi file to include localhost:
$enums = Array(‘localhost’,‘e164.org’,‘e164.arpa’,‘e164.info’);
Asterisk’s ENUM lookup seems to work, as shown in the log below, but the call cannot be completed.
[2012-07-16 16:33:21] VERBOSE[12059] netsock2.c: == Using SIP RTP TOS bits 184
[2012-07-16 16:33:21] VERBOSE[12059] netsock2.c: == Using SIP RTP CoS mark 5
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [155512345672@from-internal:1] Macro("SIP/112345678901-0000001c", "user-callerid,LIMIT,") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:1] Set("SIP/112345678901-0000001c", "AMPUSER=112345678901") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:2] GotoIf("SIP/112345678901-0000001c", "0?report") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:3] ExecIf("SIP/112345678901-0000001c", "1?Set(REALCALLERIDNUM=112345678901)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:4] Set("SIP/112345678901-0000001c", "AMPUSER=112345678901") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:5] Set("SIP/112345678901-0000001c", "AMPUSERCIDNAME=Ted") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:6] GotoIf("SIP/112345678901-0000001c", "0?report") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:7] Set("SIP/112345678901-0000001c", "AMPUSERCID=112345678901") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:8] Set("SIP/112345678901-0000001c", "CALLERID(all)="Ted" <112345678901>") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:9] GotoIf("SIP/112345678901-0000001c", "0?limit") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:10] ExecIf("SIP/112345678901-0000001c", "1?Set(GROUP(concurrency_limit)=112345678901)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:11] GotoIf("SIP/112345678901-0000001c", "1?continue") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (macro-user-callerid,s,24)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:24] Set("SIP/112345678901-0000001c", "CALLERID(number)=112345678901") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:25] Set("SIP/112345678901-0000001c", "CALLERID(name)=Ted") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-user-callerid:26] Set("SIP/112345678901-0000001c", "CHANNEL(language)=en") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [155512345672@from-internal:2] Set("SIP/112345678901-0000001c", "MOHCLASS=default") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [155512345672@from-internal:3] Set("SIP/112345678901-0000001c", "_NODEST=") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [155512345672@from-internal:4] Gosub("SIP/112345678901-0000001c", "sub-record-check,s,1(out,155512345672,)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:1] GotoIf("SIP/112345678901-0000001c", "1?check") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (sub-record-check,s,6)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:6] Set("SIP/112345678901-0000001c", "__MON_FMT=wav") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:7] GotoIf("SIP/112345678901-0000001c", "1?next") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (sub-record-check,s,10)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:10] ExecIf("SIP/112345678901-0000001c", "0?Return()") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:11] GotoIf("SIP/112345678901-0000001c", "0?out,1") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:12] Set("SIP/112345678901-0000001c", "__REC_STATUS=INITIALIZED") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:13] ExecIf("SIP/112345678901-0000001c", "0?Set(__REC_POLICY_MODE=)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:14] Set("SIP/112345678901-0000001c", "NOW=1342427601") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:15] Set("SIP/112345678901-0000001c", "__DAY=16") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:16] Set("SIP/112345678901-0000001c", "__MONTH=07") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:17] Set("SIP/112345678901-0000001c", "__YEAR=2012") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:18] Set("SIP/112345678901-0000001c", "__TIMESTR=20120716-163321") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:19] Set("SIP/112345678901-0000001c", "__FROMEXTEN=112345678901") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:20] Set("SIP/112345678901-0000001c", "__CALLFILENAME=out-155512345672-112345678901-20120716-163321-1342427601.30") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-record-check:21] Goto("SIP/112345678901-0000001c", "out,1") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (sub-record-check,out,1)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [out@sub-record-check:1] ExecIf("SIP/112345678901-0000001c", "1?Set(__REC_POLICY_MODE=dontcare)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [out@sub-record-check:2] GosubIf("SIP/112345678901-0000001c", "0?record,1(exten,155512345672,112345678901)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [out@sub-record-check:3] Return("SIP/112345678901-0000001c", "") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [155512345672@from-internal:5] Macro("SIP/112345678901-0000001c", "dialout-enum,2,155512345672,") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:1] GosubIf("SIP/112345678901-0000001c", "0?sub-pincheck,s,1()") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:2] GotoIf("SIP/112345678901-0000001c", "0?disabletrunk,1") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:3] Set("SIP/112345678901-0000001c", "DIAL_TRUNK_OPTIONS=tr") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:4] Set("SIP/112345678901-0000001c", "OUTBOUND_GROUP=OUT_2") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:5] GotoIf("SIP/112345678901-0000001c", "1?nomax") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (macro-dialout-enum,s,7)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:7] Set("SIP/112345678901-0000001c", "DIAL_NUMBER=155512345672") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:8] Set("SIP/112345678901-0000001c", "DIAL_TRUNK=2") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:9] GotoIf("SIP/112345678901-0000001c", "0?skipoutcid") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:10] Set("SIP/112345678901-0000001c", "DIAL_TRUNK_OPTIONS=") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:11] Macro("SIP/112345678901-0000001c", "outbound-callerid,2") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/112345678901-0000001c", "0?Set(CALLERPRES()=)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/112345678901-0000001c", "0?Set(REALCALLERIDNUM=112345678901)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/112345678901-0000001c", "1?normcid") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (macro-outbound-callerid,s,6)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:6] Set("SIP/112345678901-0000001c", "USEROUTCID=") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:7] Set("SIP/112345678901-0000001c", "EMERGENCYCID=") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:8] Set("SIP/112345678901-0000001c", "TRUNKOUTCID=") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/112345678901-0000001c", "1?trunkcid") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Goto (macro-outbound-callerid,s,12)
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/112345678901-0000001c", "0?Set(CALLERID(all)=)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/112345678901-0000001c", "0?Set(CALLERID(all)=)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/112345678901-0000001c", "0?Set(CALLERID(all)=)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/112345678901-0000001c", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:12] GosubIf("SIP/112345678901-0000001c", "1?sub-flp-2,s,1()") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@sub-flp-2:1] ExecIf("SIP/112345678901-0000001c", "1?Return()") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:13] AGI("SIP/112345678901-0000001c", "enumlookup.agi") in new stack
[2012-07-16 16:33:21] VERBOSE[13443] res_agi.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/enumlookup.agi
[2012-07-16 16:33:21] VERBOSE[13443] res_agi.c: -- enumlookup.agi: Looking up 155512345672 on localhost via dns_get_record
[2012-07-16 16:33:21] VERBOSE[13443] res_agi.c: -- enumlookup.agi: Looking up 155512345672 on e164.org via dns_get_record
[2012-07-16 16:33:22] VERBOSE[13443] res_agi.c: -- enumlookup.agi: Looking up 155512345672 on e164.arpa via dns_get_record
[2012-07-16 16:33:22] VERBOSE[13443] res_agi.c: -- enumlookup.agi: Looking up 155512345672 on e164.info via dns_get_record
[2012-07-16 16:33:22] VERBOSE[13443] res_agi.c: -- enumlookup.agi: Setting DIALARR to sip/[email protected]%
[2012-07-16 16:33:22] VERBOSE[13443] res_agi.c: -- AGI Script enumlookup.agi completed, returning 0
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:14] ExecIf("SIP/112345678901-0000001c", "1?Set(CONNECTEDLINE(num,i)=155512345672)") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:15] ExecIf("SIP/112345678901-0000001c", "1?Set(CONNECTEDLINE(name,i)=CID:112345678901)") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:16] GotoIf("SIP/112345678901-0000001c", "0?s-,1") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:17] ExecIf("SIP/112345678901-0000001c", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default))") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:18] ExecIf("SIP/112345678901-0000001c", "0?Set(DIAL_TRUNK_OPTIONS=M(confirm))") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:19] Set("SIP/112345678901-0000001c", "TRYDIAL=sip/[email protected]") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:20] Set("SIP/112345678901-0000001c", "DIALARR=") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:21] Dial("SIP/112345678901-0000001c", "sip/[email protected],") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] netsock2.c: == Using SIP RTP TOS bits 184
[2012-07-16 16:33:22] VERBOSE[13443] netsock2.c: == Using SIP RTP CoS mark 5
[2012-07-16 16:33:22] NOTICE[12059] chan_sip.c: Failed to authenticate on INVITE to '"Ted" ;tag=as143a42b4'
[2012-07-16 16:33:22] VERBOSE[13443] app_dial.c: -- Called sip/[email protected]
[2012-07-16 16:33:22] VERBOSE[13443] app_dial.c: -- SIP/192.168.125.209-0000001d is circuit-busy
[2012-07-16 16:33:22] VERBOSE[13443] app_dial.c: == Everyone is busy/congested at this time (1:0/1/0)
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:22] GotoIf("SIP/112345678901-0000001c", "1?dialloop:s-CONGESTION,1") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Goto (macro-dialout-enum,s,16)
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-dialout-enum:16] GotoIf("SIP/112345678901-0000001c", "1?s-CONGESTION,1") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Goto (macro-dialout-enum,s-CONGESTION,1)
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s-CONGESTION@macro-dialout-enum:1] Set("SIP/112345678901-0000001c", "RC=21") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s-CONGESTION@macro-dialout-enum:2] Goto("SIP/112345678901-0000001c", "21,1") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Goto (macro-dialout-enum,21,1)
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [21@macro-dialout-enum:1] Goto("SIP/112345678901-0000001c", "continue,1") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Goto (macro-dialout-enum,continue,1)
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [continue@macro-dialout-enum:1] GotoIf("SIP/112345678901-0000001c", "1?noreport") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Goto (macro-dialout-enum,continue,3)
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [continue@macro-dialout-enum:3] NoOp("SIP/112345678901-0000001c", "TRUNK Dial failed due to CONGESTION HANGUPCAUSE: 21 - failing through to other trunks") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [continue@macro-dialout-enum:4] Set("SIP/112345678901-0000001c", "CALLERID(number)=112345678901") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [155512345672@from-internal:6] Macro("SIP/112345678901-0000001c", "outisbusy,") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-outisbusy:1] Progress("SIP/112345678901-0000001c", "") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] pbx.c: -- Executing [s@macro-outisbusy:2] Playback("SIP/112345678901-0000001c", "all-circuits-busy-now,noanswer") in new stack
[2012-07-16 16:33:22] VERBOSE[13443] file.c: -- Playing 'all-circuits-busy-now.ulaw' (language 'en')
[2012-07-16 16:33:23] VERBOSE[13443] pbx.c: -- Executing [s@macro-outisbusy:3] Playback("SIP/112345678901-0000001c", "pls-try-call-later,noanswer") in new stack
[2012-07-16 16:33:23] VERBOSE[13443] file.c: -- Playing 'pls-try-call-later.ulaw' (language 'en')
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: -- Executing [s@macro-outisbusy:4] Macro("SIP/112345678901-0000001c", "hangupcall") in new stack
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: -- Executing [s@macro-hangupcall:1] GotoIf("SIP/112345678901-0000001c", "1?theend") in new stack
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: -- Goto (macro-hangupcall,s,3)
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: -- Executing [s@macro-hangupcall:3] ExecIf("SIP/112345678901-0000001c", "0?Set(CDR(recordingfile)=)") in new stack
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: -- Executing [s@macro-hangupcall:4] Hangup("SIP/112345678901-0000001c", "") in new stack
[2012-07-16 16:33:26] VERBOSE[13443] app_macro.c: == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/112345678901-0000001c' in macro 'hangupcall'
[2012-07-16 16:33:26] VERBOSE[13443] app_macro.c: == Spawn extension (macro-outisbusy, s, 4) exited non-zero on 'SIP/112345678901-0000001c' in macro 'outisbusy'
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: == Spawn extension (from-internal, 155512345672, 6) exited non-zero on 'SIP/112345678901-0000001c'
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: -- Executing [h@from-internal:1] Hangup("SIP/112345678901-0000001c", "") in new stack
[2012-07-16 16:33:26] VERBOSE[13443] pbx.c: == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/112345678901-0000001c'
I have two questions:
- What is wrong here and how do I fix this?
- Is there any way to add my own ENUM server to enumlookup.agi? enumlookup.agi keeps resetting to its original state.
Thanks so much!