login | register
Fri 04 of Jul, 2008 [20:22 UTC]

voip-info.org

Search with Google
Search this site with Google. Results may not include recent changes.
 
Google Ads
Shoutbox
  • Samuel, Thu 03 of Jul, 2008 [13:41 UTC]: ok thank you
  • Mats Karlsson, Thu 03 of Jul, 2008 [13:37 UTC]: Nice Samuel, will look forward to rad it.
  • bwl_fernstudent, Thu 03 of Jul, 2008 [09:08 UTC]: Your blog shows some usefull code
  • Samuel, Thu 03 of Jul, 2008 [08:04 UTC]: I'll translate it, for sure
  • Mats Karlsson, Wed 02 of Jul, 2008 [20:46 UTC]: LOL, in french! Translate it to English and I will read it.
  • Samuel, Wed 02 of Jul, 2008 [08:07 UTC]: Hello, i wrote a blog about Asterisk, speaking about installation,programming and more http://sambranche.blogspot.com/
  • Nick Barnes, Tue 01 of Jul, 2008 [17:46 UTC]: Steve - Asterisk doesn't 'fit into linux' - it's an application which runs on top of Linux.
  • Steve, Mon 30 of Jun, 2008 [18:07 UTC]: anyone know where I can find a block diagram of how asterisk fits into linux. my f'ing bosses want me to draw something up.. ugh.
  • akbar, Fri 27 of Jun, 2008 [10:37 UTC]: marley_boyz@yahoo.com how to configure call forward, call back, call pick up using TDM and asterisk 1.2.13... please help me.. thx...
  • Matthew Williams, Tue 24 of Jun, 2008 [22:37 UTC]: We are looking for Tier II VoIP Support Technicians in St Louis. Send resumes to mwilliams AT voxitas DOT com.
Server Stats
  • Execution time: 0.26s
  • Memory usage: 2.61MB
  • Database queries: 33
  • GZIP: Disabled
  • Server load: 0.93

Asterisk and multiple ENUM entries

Note

It seems that Asterisk 1.2.0 comes with a new powerful ENUMLOOKUP. So there is probably no need to use this script anymore.
Indeed. You can use RFC Compliant ENUM Macro instead.

Synopsis

Enumlookup.agi is intended as a replacement for Asterisk's EnumLookup whose
development probably was stopped.

Description

Lookup number in ENUM and return all entries of service type SIP, IAX, IAX2, H.323, TEL and MAILTO
in consideration of given order and preference.

Looks up an extension given in ${ENUMEXTEN} via ENUM and returns a couple of variables which can be used in
dialplan extensions.conf.
The extension needs to include a full international telephone number, including the country code but with no zeros
or other characters before the country code, like 49XXXXXXXX for a German phone number (see examples below).

Download

Current version can be found here:
Also see requirements below!

Parameters

There are some parameters, which may be used to control behavior of enumlookup.agi and its results:
  • ENUMEXTEN (phone number)
     You have to allocate the phone number for enumlookup to this variable.

  • ENUMSEPARATETEL (yes|no)
     This parameter gives control to the possibility in returning ENUM-entries of type "tel:" in
     separate variables.

  • ENUMIAXPREFIX (by default IAX/)
     This sets the prefix for returned iax entries.

  • ENUMIAX2PREFIX (by default IAX2/)
     This sets the prefix for returned iax entries.

  • ENUMSIPPREFIX (by default SIP/)
     This sets the prefix for returned sip entries.

  • ENUMTELPREFIX (by default empty)
     This sets the prefix for returned tel entries.

  • ENUMH323PREFIX (by default H323/)
     This sets the prefix for returned h323 entries.

  • ENUMMAILTOPREFIX (by default mailto:)
     This sets the prefix for returned mailto entries.

These parameters may be defined in "globals" section of extensions.conf.

NOTE: The SETVAR command has been replaced. Use SET instead.

[globals]
ENUMSEPARATETEL => no
ENUMIAXPREFIX => IAX2/

or may be given to enumlookup.agi directly at startup of AGI-script
[enum]
exten => s,1,SetVar(ENUMSEPARATETEL=no)
exten => s,n,SetVar(ENUMIAXPREFIX=IAX2/)
exten => s,n,SetVar(ENUMEXTEN=49${EXTEN:1}) ; when called with "usual" German number, e.g. 034160019876
exten => s,n,agi,enumlookup.agi


Return codes

Currently, the enumservices SIP, IAX, IAX2, H.323, TEL and MAILTO are recognized.

We have to look at two possibilities:

1.) AGI script called with ENUMSEPARATETEL = no

   returned variables:
  • ${ENUMENTRIES} total number of ENUM entries
     (service type=sip|iax|iax2|h323|tel|mailto)

  • ${ENUMENTRY1},${ENUMENTRY2} ... ${ENUMENTRY${ENUMENTRIES}} ENUM entries
     (service type=sip|iax|iax2|h323|tel|mailto)

     Found entries are sorted by user given order/preference scheme at ENUM registrar.
     Entries with same order/preference are concatenated with "&".
     Mailto entries are treated as if they had lower preference. They are concatenated with ",".

2.) AGI script called with ENUMSEPARATETEL = yes

   returned variables:
  • ${ENUMENTRIES} total number of ENUM entries
     (service type=sip|iax|iax2|h323|mailto)

  • ${ENUMENTRY1},${ENUMENTRY2} ... ${ENUMENTRY${ENUMENTRIES}} ENUM entries
     (service type=sip|iax|iax2|h323|mailto)

     Found entries are sorted by user given order/preference scheme at ENUM-registrar.
     Entries with same order/preference are concatenated with "&".
     Mailto entries are treated as if they had lower preference. They are concatenated with ",".

  • ${ENUMTELENTRIES} total number of ENUM entries
     (service type=tel)

  • ${ENUMTELENTRY1},${ENUMTELENTRY2} ... ${ENUMTELENTRY${ENUMTELENTRIES}} ENUM entries
     (service type=tel)

     Found entries are sorted by user given order/preference scheme at ENUM registrar.

Configuration file enumagi.conf

Starting with version 0.13 of enumlookup.agi, configuration data can be stored
in new conf file enumagi.conf.
 

Example Dialplan #1 - With Voicemail

[globals]
ENUMIAXPREFIX => IAX2/     ; I don't have support for IAX protocol
ENUMSEPARATETEL => YES     ; tel entries should use separate variables

[dial-out-with-enum]
exten => _50.,1,SetVar(ENUMEXTEN=49${EXTEN:2})       ; I only use german numbers
exten => _50.,2,SetVar(ENUMTELPREFIX=SIP/my-sip-peer/) ; I want to use
         ; my SIP-Provider for dialing tel entries
exten => _50.,3,agi,enumlookup.agi
exten => _50.,4,SetVar(EINTRAG=0)
exten => _50.,5,GotoIf($[${ENUMENTRIES}]?10:31)      ; Look if there are entries

exten => _50.,10,SetVar(EINTRAG=$[${EINTRAG} + 1])
exten => _50.,11,GotoIf($[$[${ENUMENTRY${EINTRAG}:0:3} = IAX] | $[${ENUMENTRY${EINTRAG}:0:3} = SIP]]?12:21)

; What to do with IAX(2) and SIP entries:
exten => _50.,12,Dial(${ENUMENTRY${EINTRAG}},10,T)
exten => _50.,13,GotoIf($[${EINTRAG} < ${ENUMENTRIES}]?10:31)  ; Repeat if there
         ; are more entries else look for tel entries

; What to do with mailto entries:
exten => _50.,21,GotoIf($[${ENUMENTRY${EINTRAG}:0:6} = mailto]?22:30)
exten => _50.,22,Playback(vm-nobodyavail)
exten => _50.,23,Playback(vm-intro)
exten => _50.,24,Playback(beep)
exten => _50.,25,Monitor(wav,/tmp/nachricht)
exten => _50.,26,MeetMe(20,pqs)  ; You have to configure MeetMe
exten => _50.,27,System(nail -a /tmp/nachricht-in.wav -s Voicemail ${ENUMENTRY${EINTRAG}:7} < /dev/null)
exten => _50.,28,Hangup

exten => _50.,30,GotoIf($[${EINTRAG} < ${ENUMENTRIES}]?10:31)  ; Repeat if there
         ; are more entries else look for tel entries

exten => _50.,31,GotoIf($[${ENUMTELENTRIES}]?32:51)

; What to do with tel entries (is only used if all the other entries fail):
exten => _50.,32,SetVar(EINTRAG=0)
exten => _50.,33,SetVar((EINTRAG=$[${EINTRAG} + 1])
exten => _50.,34,Playback(beep)  ; Playing beep means that this call isn't for
         ; free
exten => _50.,35,Dial(${ENUMTELENTRY${EINTRAG}},10,T)
exten => _50.,36,GotoIf($[${EINTRAG} < ${ENUMTELENTRIES}]?33:51)

; If there are no enum entries or if all of them fail:
exten => _50.,51,Playback(beep)
exten => _50.,52,Dial(SIP/my-sip-peer/${EXTEN:1})
exten => _50.,53,Hangup



Requirements

Fortunately the following software is installed by default on almost every LINUX system.

You need:
  • dig in your $PATH: dig is part of bind. (see here for installation instructions)
  • a bash compatible shell: Type /bin/sh --version to see if it is installed. (see here for installation instructions) Perhaps you have to change /bin/sh to /bin/bash or similar in enumlookup.agi depending on location where your bash is installed.
  • sed: (see here for installation instructions)
  • awk: (see here for installation instructions)
  • grep: (see here for installation instructions)

Register Domain

At present the e164.arpa structure isn't widespread worldwide. But you can use e164.org instead. The registration is fairly straight forward. Read the documentation at e164.org!

See also



Back to Asterisk - documentation of application commands

Created by betateilchen, Last modification by xrobau on Sun 29 of Jan, 2006 [07:00 UTC]

Please update this page with new information, just login and click on the "Edit" or "Add Comment" button above. Get a free login here: Register Thanks! - support@voip-info.org

Page Changes | Comments

Sponsored by:

Terms of Service Privacy Policy
© 2003-2008 VOIP-Info.org LLC

Powered by bitweaver