We have been using a “Positron Telecom Asterisk Gateway G-124 64-00003” with a reasonable degree of success for a couple of years.
This morning we realised that it wasn’t passing through any incoming calls.
After some investigation I found that the Asterisk log file had a number of incidents like:
[Aug 11 12:14:54] NOTICE[1057] chan_dahdi.c: CallerID number: 01162169351, name: (null), flags=4
[Aug 11 12:15:24] WARNING[1070] chan_dahdi.c: CID timed out waiting for ring. Exiting simple switch
The incoming caller hears ringing tones, and the rest of Asterisk seems unaware that anything has happened, ( Reasonable since the incident doesn’t actually graduate to being an actual incoming call. )
Now going back to earlier in the log file, I see that in fact we have had periods in the past when many or all incoming calls ended up like this, but people have just accused us of failing to answer our phones, and we haven’t taken them seriously. Indeed we seems to have had 2 whole days at the end of July when no-one got through.
It is important to note that we are in the UK, and it’s quite possible this is a UK-standards-related issue.
I have done the obvious, like ensuring that a cheap old PSTN phone when plugged into the same line rings merrily.
So does anyone have any suggestion as to where I might start fixing the issue, apart from throwing the kit in the bin and going back to tin cans and string?
David
=================================================================
] - Which version (1.2.x or 1.4.x) and flavor of Asterisk are you using and which version?
]
] Asterisk from source
] Trixbox (previously: Asterisk@Home)
] Asterisk Business Edition
] Pound Key rPath Asterisk Soft Appliance
]
] This is an important point, as the distribution you are using has an impact on how the issue may be addressed.
Asterisk 1.4.26.3, Copyright © 1999 - 2008 Digium, Inc. and others. on Positron Telecom pre-built h/w.
] - What is your use case and call flow?
]
] Clearly stated what you are trying to do, what elements are involved in the process (ie - endpoints, Asterisk, providers, etc) and exactly what is failing…
]
I think the info here is too simple to explain.
Two UK landlines ( BT ) plugged into first two sockets.
Failure seems to be occasional, but can last for may hours before spontaneously clearing.
] - What is your network environment?
]
] This is VERY important if you are having problems sending or receiving sound.
]
] - Is your Asterisk server on NAT network or a publically addressable IP?
] - Are your endpoints/clients on a NAT or publically addressable IP?
]
As far as I can see the issue is not network-related at all, though feel free to correct me.
] - What is Asterisk saying when you attempt the use case?
message in log as noted at top of this.
] - What is your configuration?
]
] Post the relevant configuration files:
blimey, well you asked for it…
-------------------------------- /etc/asterisk/sip.conf ---------------------------------------
;
; SIP Configuration example for Asterisk
;
[[ comment lines removed to meet post size limit ]]
[general]
context=default ; Default context for incoming calls
allowguest=no ; Allow or reject guest calls (default is yes, this can also be set to 'osp'
; if asterisk was compiled with OSP support.
;realm=mydomain.tld ; Realm for digest authentication
; defaults to "asterisk"
; Realms MUST be globally unique according to RFC 3261
; Set this to your host name or domain name
;bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; Note: Asterisk only uses the first host
; in SRV records
; Disabling DNS SRV lookups disables the
; ability to place SIP calls based on domain
; names to some other SIP users on the Internet
;domain=mydomain.tld ; Set default domain for this host
; If configured, Asterisk will only allow
; INVITE and REFER to non-local domains
; Use "sip show domains" to list local domains
;domain=mydomain.tld,mydomain-incoming
; Add domain and configure incoming context
; for external calls to this domain
;domain=1.2.3.4 ; Add IP address as local domain
; You can have several "domain" settings
;allowexternalinvites=no ; Disable INVITE and REFER to non-local domains
; Default is yes
;autodomain=yes ; Turn this on to have Asterisk add local host
; name and local IP to domain list.
;pedantic=yes ; Enable slow, pedantic checking for Pingtel
; and multiline formatted headers for strict
; SIP compatibility (defaults to "no")
tos_sip=cs3 ; Sets TOS for SIP packets.
tos_audio=ef ; Sets TOS for RTP audio packets.
tos_video=af41 ; Sets TOS for RTP video packets.
;maxexpiry=3600 ; Max length of incoming registration we allow
;defaultexpiry=120 ; Default length of incoming/outoing registration
;notifymimetype=text/plain ; Allow overriding of mime type in MWI NOTIFY
;checkmwi=10 ; Default time between mailbox checks for peers
;vmexten=voicemail ; dialplan extension to reach mailbox sets the
; Message-Account in the MWI notify message
; defaults to "asterisk"
;videosupport=yes ; Turn on support for SIP video
;recordhistory=yes ; Record SIP history by default
; (see sip history / sip no history)
;disallow=all ; First disallow all codecs
;allow=ulaw ; Allow codecs in order of preference
;allow=ilbc ;
;musicclass=default ; Sets the default music on hold class for all SIP calls
; This may also be set for individual users/peers
;language=en ; Default language setting for all users/peers
; This may also be set for individual users/peers
;relaxdtmf=yes ; Relax dtmf handling
;rtptimeout=60 ; Terminate call if 60 seconds of no RTP activity
; when we're not on hold
;rtpholdtimeout=300 ; Terminate call if 300 seconds of no RTP activity
; when we're on hold (must be > rtptimeout)
;trustrpid = no ; If Remote-Party-ID should be trusted
;sendrpid = yes ; If Remote-Party-ID should be sent
;progressinband=never ; If we should generate in-band ringing always
; use 'never' to never use in-band signalling, even in cases
; where some buggy devices might not render it
;useragent=Asterisk PBX ; Allows you to change the user agent string
;promiscredir = no ; If yes, allows 302 or REDIR to non-local SIP address
; Note that promiscredir when redirects are made to the
; local system will cause loops since SIP is incapable
; of performing a "hairpin" call.
;usereqphone = no ; If yes, ";user=phone" is added to uri that contains
; a valid phone number
;dtmfmode = rfc2833 ; Set default dtmfmode for sending DTMF. Default: rfc2833
; Other options:
; info : SIP INFO messages
; inband : Inband audio (requires 64 kbit codec -alaw, ulaw)
; auto : Use rfc2833 if offered, inband otherwise
;compactheaders = yes ; send compact sip headers.
;sipdebug = yes ; Turn on SIP debugging by default, from
; the moment the channel loads this configuration
subscribecontext = BLF ; Set a specific context for SUBSCRIBE requests
; Useful to limit subscriptions to local extensions
; Settable per peer/user also
notifyringing = yes ; Notify subscriptions on RINGING state
[[ comment lines removed to meet post size limit ]]
;
; host is either a host name defined in DNS or the name of a section defined
; below.
;
; Examples:
#include "sip-general.conf"
#include "sip-registrations.conf"
;
;register => 1234:password@mysipprovider.com
;
; This will pass incoming calls to the 's' extension
;
;
;register => 2345:password@sip_proxy/1234
;
; Register 2345 at sip provider 'sip_proxy'. Calls from this provider
; connect to local extension 1234 in extensions.conf, default context,
; unless you configure a [sip_proxy] section below, and configure a
; context.
; Tip 1: Avoid assigning hostname to a sip.conf section like [provider.com]
; Tip 2: Use separate type=peer and type=user sections for SIP providers
; (instead of type=friend) if you have calls in both directions
;registertimeout=20 ; retry registration calls every 20 seconds (default)
;registerattempts=10 ; Number of registration attempts before we give up
; 0 = continue forever, hammering the other server until it
; accepts the registration
; Default is 0 tries, continue forever
;callevents=no ; generate manager events when sip ua performs events (e.g. hold)
;----------------------------------------- NAT SUPPORT ------------------------
; The externip, externhost and localnet settings are used if you use Asterisk
; behind a NAT device to communicate with services on the outside.
;externip = 200.201.202.203 ; Address that we're going to put in outbound SIP messages
; if we're behind a NAT
; The externip and localnet is used
; when registering and communicating with other proxies
; that we're registered with
;externhost=foo.dyndns.net ; Alternatively you can specify an
; external host, and Asterisk will
; perform DNS queries periodically. Not
; recommended for production
; environments! Use externip instead
;externrefresh=10 ; How often to refresh externhost if
; used
; You may add multiple local networks. A reasonable set of defaults
; are:
;localnet=192.168.0.0/255.255.0.0; All RFC 1918 addresses are local networks
;localnet=10.0.0.0/255.0.0.0 ; Also RFC1918
;localnet=172.16.0.0/12 ; Another RFC1918 with CIDR notation
;localnet=169.254.0.0/255.255.0.0 ;Zero conf local network
[[ comment lines removed to meet post size limit ]]
;
;nat=no ; Global NAT settings (Affects all peers and users)
; yes = Always ignore info and assume NAT
; no = Use NAT mode only according to RFC3581
; never = Never attempt NAT mode or RFC3581 support
; route = Assume NAT, don't send rport
; (work around more UNIDEN bugs)
;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list
; just like friends added from the config file only on a
; as-needed basis? (yes|no)
;rtupdate=yes ; Send registry updates to database using realtime? (yes|no)
; If set to yes, when a SIP UA registers successfully, the ip address,
; the origination port, the registration period, and the username of
; the UA will be set to database via realtime. If not present, defaults to 'yes'.
;rtautoclear=yes ; Auto-Expire friends created on the fly on the same schedule
; as if it had just registered? (yes|no|<seconds>)
; If set to yes, when the registration expires, the friend will vanish from
; the configuration until requested again. If set to an integer,
; friends expire within this number of seconds instead of the
; registration interval.
;ignoreregexpire=yes ; Enabling this setting has two functions:
;
; For non-realtime peers, when their registration expires, the information
; will _not_ be removed from memory or the Asterisk database; if you attempt
; to place a call to the peer, the existing information will be used in spite
; of it having expired
;
; For realtime peers, when the peer is retrieved from realtime storage,
; the registration information will be used regardless of whether
; it has expired or not; if it expires while the realtime peer is still in
; memory (due to caching or other reasons), the information will not be
; removed from realtime storage
[[ comment lines removed to meet post size limit ]]
; fromdomain=mydomain.tld ; When making outbound SIP INVITEs to
; non-peers, use your primary domain "identity"
; for From: headers instead of just your IP
; address. This is to be polite and
; it may be a mandatory requirement for some
; destinations which do not have a prior
; account relationship with your server.
[authentication]
; Global credentials for outbound calls, i.e. when a proxy challenges your
; Asterisk server for authentication. These credentials override
; any credentials in peer/register definition if realm is matched.
;
; This way, Asterisk can authenticate for outbound calls to other
; realms. We match realm on the proxy challenge and pick an set of
; credentials from this list
; Syntax:
; auth = <user>:<secret>@<realm>
; auth = <user>#<md5secret>@<realm>
; Example:
;auth=mark:topsecret@digium.com
;
; You may also add auth= statements to [peer] definitions
; Peer auth= override all other authentication settings if we match on realm
;------------------------------------------------------------------------------
; Users and peers have different settings available. Friends have all settings,
; since a friend is both a peer and a user
;
; User config options: Peer configuration:
; -------------------- -------------------
; context context
; permit permit
; deny deny
; secret secret
; md5secret md5secret
; dtmfmode dtmfmode
; canreinvite canreinvite
; nat nat
; callgroup callgroup
; pickupgroup pickupgroup
; language language
; allow allow
; disallow disallow
; insecure insecure
; trustrpid trustrpid
; progressinband progressinband
; promiscredir promiscredir
; useclientcode useclientcode
; accountcode accountcode
; setvar setvar
; callerid callerid
; amaflags amaflags
; call-limit call-limit
; restrictcid restrictcid
; subscribecontext subscribecontext
; videosupport videosupport
; mailbox
; username
; template
; fromdomain
; regexten
; fromuser
; host
; port
; qualify
; defaultip
; rtptimeout
; rtpholdtimeout
; sendrpid
;[sip_proxy]
; For incoming calls only. Example: FWD (Free World Dialup)
; We match on IP address of the proxy for incoming calls
; since we can not match on username (caller id)
;type=peer
;context=from-fwd
;host=fwd.pulver.com
;[sip_proxy-out]
;type=peer ; we only want to call out, not be called
;secret=guessit
;username=yourusername ; Authentication user for outbound proxies
;fromuser=yourusername ; Many SIP providers require this!
;fromdomain=provider.sip.domain
;host=box.provider.com
;usereqphone=yes ; This provider requires ";user=phone" on URI
;call-limit=5 ; permit only 5 simultaneous outgoing calls to this peer
;------------------------------------------------------------------------------
; Definitions of locally connected SIP phones
;
; type = user a device that authenticates to us by "from" field to place calls
; type = peer a device we place calls to or that calls us and we match by host
; type = friend two configurations (peer+user) in one
;
; For local phones, type=friend works most of the time
;
; If you have one-way audio, you propably have NAT problems.
; If Asterisk is on a public IP, and the phone is inside of a NAT device
; you will need to configure nat option for those phones.
; Also, turn on qualify=yes to keep the nat session open
;[grandstream1]
;type=friend
;context=from-sip ; Where to start in the dialplan when this phone calls
;callerid=John Doe <1234> ; Full caller ID, to override the phones config
;host=192.168.0.23 ; we have a static but private IP address
; No registration allowed
;nat=no ; there is not NAT between phone and Asterisk
;canreinvite=yes ; allow RTP voice traffic to bypass Asterisk
;dtmfmode=info ; either RFC2833 or INFO for the BudgeTone
;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time
; from the phone to asterisk
; (1 for the explicit peer, 1 for the explicit user,
; remember that a friend equals 1 peer and 1 user in
; memory)
;mailbox=1234@default ; mailbox 1234 in voicemail context "default"
;disallow=all ; need to disallow=all before we can use allow=
;allow=ulaw ; Note: In user sections the order of codecs
; listed with allow= does NOT matter!
;allow=alaw
;allow=g723.1 ; Asterisk only supports g723.1 pass-thru!
;allow=g729 ; Pass-thru only unless g729 license obtained
;astdb=chan2ext/SIP/grandstream1=1234 ; ensures an astDB entry exists
;[xlite1]
; Turn off silence suppression in X-Lite ("Transmit Silence"=YES)!
; Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed
;type=friend
;regexten=1234 ; When they register, create extension 1234
;callerid="Jane Smith" <5678>
;host=dynamic ; This device needs to register
;nat=yes ; X-Lite is behind a NAT router
;canreinvite=no ; Typically set to NO if behind NAT
;disallow=all
;allow=gsm ; GSM consumes far less bandwidth than ulaw
;allow=ulaw
;allow=alaw
;mailbox=1234@default,1233@default ; Subscribe to status of multiple mailboxes
;[snom]
;type=friend ; Friends place calls and receive calls
;context=from-sip ; Context for incoming calls from this user
;secret=blah
;subscribecontext=localextensions ; Only allow SUBSCRIBE for local extensions
;language=de ; Use German prompts for this user
;host=dynamic ; This peer register with us
;dtmfmode=inband ; Choices are inband, rfc2833, or info
;defaultip=192.168.0.59 ; IP used until peer registers
;mailbox=1234@context,2345 ; Mailbox(-es) for message waiting indicator
;vmexten=voicemail ; dialplan extension to reach mailbox
; sets the Message-Account in the MWI notify message
; defaults to global vmexten which defaults to "asterisk"
;restrictcid=yes ; To have the callerid restriced -> sent as ANI
;disallow=all
;allow=ulaw ; dtmfmode=inband only works with ulaw or alaw!
;[polycom]
;type=friend ; Friends place calls and receive calls
;context=from-sip ; Context for incoming calls from this user
;secret=blahpoly
;host=dynamic ; This peer register with us
;dtmfmode=rfc2833 ; Choices are inband, rfc2833, or info
;username=polly ; Username to use in INVITE until peer registers
; Normally you do NOT need to set this parameter
;disallow=all
;allow=ulaw ; dtmfmode=inband only works with ulaw or alaw!
;progressinband=no ; Polycom phones don't work properly with "never"
;[pingtel]
;type=friend
;secret=blah
;host=dynamic
;insecure=port ; Allow matching of peer by IP address without matching port number
;insecure=invite ; Do not require authentication of incoming INVITEs
;insecure=port,invite ; (both)
;qualify=1000 ; Consider it down if it's 1 second to reply
; Helps with NAT session
; qualify=yes uses default value
;callgroup=1,3-4 ; We are in caller groups 1,3,4
;pickupgroup=1,3-5 ; We can do call pick-p for call group 1,3,4,5
;defaultip=192.168.0.60 ; IP address to use if peer has not registred
;[cisco1]
;type=friend
;secret=blah
;qualify=200 ; Qualify peer is no more than 200ms away
;nat=yes ; This phone may be natted
; Send SIP and RTP to the IP address that packet is
; received from instead of trusting SIP headers
;host=dynamic ; This device registers with us
;canreinvite=no ; Asterisk by default tries to redirect the
; RTP media stream (audio) to go directly from
; the caller to the callee. Some devices do not
; support this (especially if one of them is
; behind a NAT).
;defaultip=192.168.0.4 ; IP address to use until registration
;username=goran ; Username to use when calling this device before registration
; Normally you do NOT need to set this parameter
;setvar=CUSTID=5678 ; Channel variable to be set for all calls from this device
#include "trunks-sip.conf"
#include "sip-postel-templates.conf"
#include "sip-postel.conf"
-------------------------------- /etc/asterisk/iax.conf ---------------------------------------
; Inter-Asterisk eXchange driver definition
;
[[ comment lines removed to meet post size limit ]]
;
[general]
bindport=4569 ; bindport and bindaddr may be specified
; ; NOTE: bindport must be specified BEFORE
; bindaddr or may be specified on a specific
; bindaddr if followed by colon and port
; (e.g. bindaddr=192.168.0.1:4569)
;bindaddr=192.168.0.1 ; more than once to bind to multiple
; ; addresses, but the first will be the
; ; default
;
[[ comment lines removed to meet post size limit ]]
;
;iaxcompat=yes
;
; Disable UDP checksums (if nochecksums is set, then no checkums will
; be calculated/checked on systems supporting this feature)
;
nochecksums=no
;
;
; For increased security against brute force password attacks
; enable "delayreject" which will delay the sending of authentication
; reject for REGREQ or AUTHREP if there is a password.
;
delayreject=yes
;
; You may specify a global default AMA flag for iaxtel calls. It must be
; one of 'default', 'omit', 'billing', or 'documentation'. These flags
; are used in the generation of call detail records.
;
;amaflags=default
;
; ADSI (Analog Display Services Interface) can be enabled if you have
; (or may have) ADSI compatible CPE equipment
;
;adsi=no
;
; You may specify a default account for Call Detail Records in addition
; to specifying on a per-user basis
;
;accountcode=lss0101
;
; You may specify a global default language for users.
; Can be specified also on a per-user basis
; If omitted, will fallback to english
;
;language=en
;
[[ comment lines removed to meet post size limit ]]
;
;mohinterpret=default
;
; This option specifies which music on hold class to suggest to the peer channel
; when this channel places the peer on hold. It may be specified globally or on
; a per-user or per-peer basis.
;
;mohsuggest=default
;
; Specify bandwidth of low, medium, or high to control which codecs are used
; in general.
;
bandwidth=high
;
; You can also fine tune codecs here using "allow" and "disallow" clauses
; with specific codecs. Use "all" to represent all formats.
;
disallow=all
allow=ulaw
allow=g729
; same as bandwidth=high
;disallow=g723.1 ; Hm... Proprietary, don't use it...
;disallow=lpc10 ; Icky sound quality... Mr. Roboto.
;allow=gsm ; Always allow GSM, it's cool :)
;
; You can adjust several parameters relating to the jitter buffer.
; The jitter buffer's function is to compensate for varying
; network delay.
;
; All the jitter buffer settings are in milliseconds.
; The jitter buffer works for INCOMING audio - the outbound audio
; will be dejittered by the jitter buffer at the other end.
;
; jitterbuffer=yes|no: global default as to whether you want
; the jitter buffer at all.
;
; forcejitterbuffer=yes|no: in the ideal world, when we bridge VoIP channels
; we don't want to do jitterbuffering on the switch, since the endpoints
; can each handle this. However, some endpoints may have poor jitterbuffers
; themselves, so this option will force * to always jitterbuffer, even in this
; case.
;
; maxjitterbuffer: a maximum size for the jitter buffer.
; Setting a reasonable maximum here will prevent the call delay
; from rising to silly values in extreme situations; you'll hear
; SOMETHING, even though it will be jittery.
;
; resyncthreshold: when the jitterbuffer notices a significant change in delay
; that continues over a few frames, it will resync, assuming that the change in
; delay was caused by a timestamping mix-up. The threshold for noticing a
; change in delay is measured as twice the measured jitter plus this resync
; threshold.
; Resyncing can be disabled by setting this parameter to -1.
;
; maxjitterinterps: the maximum number of interpolation frames the jitterbuffer
; should return in a row. Since some clients do not send CNG/DTX frames to
; indicate silence, the jitterbuffer will assume silence has begun after
; returning this many interpolations. This prevents interpolating throughout
; a long silence.
;
jitterbuffer=yes
forcejitterbuffer=yes
maxjitterbuffer=1000
maxjitterinterps=10
resyncthreshold=1000
;trunkfreq=20 ; How frequently to send trunk msgs (in ms)
[[ comment lines removed to meet post size limit ]]
;
trunktimestamps=yes
;
; Minimum and maximum amounts of time that IAX peers can request as
; a registration expiration interval (in seconds).
minregexpire = 120
maxregexpire = 300
;
; IAX helper threads
; Establishes the number of iax helper threads to handle I/O.
;iaxthreadcount = 256
; Establishes the number of extra dynamic threads that may be spawned to handle I/O
iaxmaxthreadcount = 256
;
; We can register with another IAX server to let him know where we are
; in case we have a dynamic IP address for example
;
; Register with tormenta using username marko and password secretpass
;
;register => marko:secretpass@tormenta.linux-support.net
;
; Register joe at remote host with no password
;
;register => joe@remotehost:5656
;
; Register marko at tormenta.linux-support.net using RSA key "torkey"
;
;register => marko:[torkey]@tormenta.linux-support.net
;
; Sample Registration for iaxtel
;
; Visit http://www.iaxtel.com to register with iaxtel. Replace "user"
; and "pass" with your username and password for iaxtel. Incoming
; calls arrive at the "s" extension of "default" context.
;
;register => user:pass@iaxtel.com
;
; Sample Registration for IAX + FWD
;
; To register using IAX with FWD, it must be enabled by visiting the URL
; http://www.fwdnet.net/index.php?section_id=112
;
; Note that you need an extension in you default context which matches
; your free world dialup number. Please replace "FWDNumber" with your
; FWD number and "passwd" with your password.
;
;register => FWDNumber:passwd@iax.fwdnet.net
#include "iax-registrations.conf"
;
;
; You can disable authentication debugging to reduce the amount of
; debugging traffic.
;
;authdebug=no
;
; See doc/ip-tos.txt for a description of the tos parameters.
;tos=ef
;
; If regcontext is specified, Asterisk will dynamically create and destroy
; a NoOp priority 1 extension for a given peer who registers or unregisters
; with us. The actual extension is the 'regexten' parameter of the registering
; peer or its name if 'regexten' is not provided. More than one regexten
; may be supplied if they are separated by '&'. Patterns may be used in
; regexten.
;
;regcontext=iaxregistrations
;
[[ comment lines removed to meet post size limit ]]
;
autokill=yes
;
; codecpriority controls the codec negotiation of an inbound IAX call.
; This option is inherited to all user entities. It can also be defined
; in each user entity separately which will override the setting in general.
;
; The valid values are:
;
; caller - Consider the callers preferred order ahead of the host's.
; host - Consider the host's preferred order ahead of the caller's.
; disabled - Disable the consideration of codec preference altogether.
; (this is the original behaviour before preferences were added)
; reqonly - Same as disabled, only do not consider capabilities if
; the requested format is not available the call will only
; be accepted if the requested format is available.
;
; The default value is 'host'
;
;codecpriority=host
;
[[ comment lines removed to meet post size limit ]]
;
;allowfwdownload=yes
;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list
; just like friends added from the config file only on a
; as-needed basis? (yes|no)
;rtupdate=yes ; Send registry updates to database using realtime? (yes|no)
; If set to yes, when a IAX2 peer registers successfully,
; the ip address, the origination port, the registration period,
; and the username of the peer will be set to database via realtime.
; If not present, defaults to 'yes'.
;rtautoclear=yes ; Auto-Expire friends created on the fly on the same schedule
; as if it had just registered? (yes|no|<seconds>)
; If set to yes, when the registration expires, the friend will
; vanish from the configuration until requested again.
; If set to an integer, friends expire within this number of
; seconds instead of the registration interval.
;rtignoreregexpire=yes ; When reading a peer from Realtime, if the peer's registration
; has expired based on its registration interval, used the stored
; address information regardless. (yes|no)
;
; The following two options are used to disable call token validation for the
; purposes of interoperability with IAX2 endpoints that do not yet support it.
;
; Call token validation can be set as optional for a single IP address or IP
; address range by using the 'calltokenoptional' option. 'calltokenoptional' is
; only a global option.
;
;calltokenoptional=209.16.236.73/255.255.255.0
;
; In a peer/user/friend definition, the 'requirecalltoken' option may be used.
; By setting 'requirecalltoken=no', call token validation becomes optional for
; that peer/user. By setting 'requirecalltoken=auto', call token validation
; is optional until a call token supporting peer registers successfully using
; call token validation. This is used as an indication that from now on, we
; can require it from this peer. So, requirecalltoken is internally set to yes.
; By default, 'requirecalltoken=yes'.
;
;requirecalltoken=no
;
;
; These options are used to limit the amount of call numbers allocated to a
; single IP address. Before changing any of these values, it is highly encouraged
; to read the user guide associated with these options first. In most cases, the
; default values for these options are sufficient.
;
; The 'maxcallnumbers' option limits the amount of call numbers allowed for each
; individual remote IP address. Once an IP address reaches it's call number
; limit, no more new connections are allowed until the previous ones close. This
; option can be used in a peer definition as well, but only takes effect for
; the IP of a dynamic peer after it completes registration.
;
;maxcallnumbers=512
;
[[ comment lines removed to meet post size limit ]]
;
;maxcallnumbers_nonvalidated=1024
;
[[ comment lines removed to meet post size limit ]]
;
;[callnumberlimits]
;10.1.1.0/255.255.255.0 = 24
;10.1.2.0/255.255.255.0 = 32
;
[[ comment lines removed to meet post size limit ]]
;
;shrinkcallerid=yes ; on by default
#include "trunks-iax.conf"
- /etc/asterisk/extensions.conf -
;!
;! Automatically generated configuration file
;! Filename: extensions.conf (/etc/asterisk/extensions.conf)
;! Generator: Manager
;! Creation Date: Sat Jan 14 12:41:40 1922
;!
[general]
static = yes
writeprotect = no
autofallthrough = yes
clearglobalvars = no
priorityjumping = no
[globals]
#include "extensions-global.conf"
[dundi-e164-canonical]
[dundi-e164-customers]
[dundi-e164-via-pstn]
[dundi-e164-local]
include => dundi-e164-canonical
include => dundi-e164-customers
include => dundi-e164-via-pstn
[dundi-e164-switch]
switch => DUNDi/e164
[dundi-e164-lookup]
include => dundi-e164-local
include => dundi-e164-switch
[macro-dundi-e164]
exten => s,1,Goto(${ARG1},1)
include => dundi-e164-lookup
[macro-trunkdial]
exten => s,1,Dial(${ARG1})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Hangup
exten => _s-.,1,NoOp
[iaxtel700]
exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)
[iaxprovider]
[trunkint]
exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})
exten => _9011.,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunkld]
exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})
exten => _91NXXNXXXXXX,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunklocal]
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[trunktollfree]
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
[international]
ignorepat => 9
include => longdistance
include => trunkint
[longdistance]
ignorepat => 9
include => local
include => trunkld
[local]
ignorepat => 9
include => default
include => parkedcalls
include => trunklocal
;include => iaxtel700
include => trunktollfree
include => iaxprovider
[macro-stdexten]
exten => s,1,Dial(${ARG2},20,t)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(${ARG1},u)
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(${ARG1},b)
exten => s-BUSY,2,Goto(default,s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1})
[macro-stdexten-novmail]
exten => s,1,Dial(${ARG2},${ARG3},t)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(${ARG1},u)
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(${ARG1},b)
exten => s-BUSY,2,Goto(default,s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
[macro-stdPrivacyexten]
exten => s,1,Dial(${ARG2},20|p)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => s-BUSY,2,Goto(default,s,1)
exten => s-DONTCALL,1,Goto(${ARG3},s,1)
exten => s-TORTURE,1,Goto(${ARG4},s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1})
[macro-page]
exten => s,1,ChanIsAvail(${ARG1}|js)
exten => s,n,GoToIf([${AVAILSTATUS} = "1"]?autoanswer:fail)
;exten => s,n(autoanswer),Set(_ALERT_INFO="RA")
exten => s,n(autoanswer),SIPAddHeader(Alert-Info: Ring Answer)
exten => s,n,SIPAddHeader(Call-Info: Answer-After=0)
exten => s,n,NoOp()
exten => s,n,Dial(${ARG1},5)
exten => s,n,Page(${ARG1})
exten => s,n(fail),Hangup
[demo]
exten => s,1,Wait(1)
exten => s,n,Answer
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n(restart),BackGround(demo-congrats)
exten => s,n(instruct),BackGround(demo-instruct)
exten => s,n,WaitExten
exten => 2,1,BackGround(demo-moreinfo)
exten => 2,n,Goto(s,instruct)
exten => 3,1,Set(LANGUAGE()=fr)
exten => 3,n,Goto(s,restart)
exten => 1000,1,Goto(default,s,1)
exten => 1234,1,Playback(transfer,skip)
exten => 1234,n,Macro(stdexten,1234,${CONSOLE})
exten => 1235,1,Voicemail(u1234)
exten => 1236,1,Dial(Console/dsp)
exten => 1236,n,Voicemail(u1234)
exten => #,1,Playback(demo-thanks)
exten => #,n,Hangup
exten => t,1,Goto(#,1)
exten => i,1,Playback(invalid)
exten => 500,1,Playback(demo-abouttotry)
exten => 500,n,Dial(IAX2/guest@misery.digium.com/s@default)
exten => 500,n,Playback(demo-nogo)
exten => 500,n,Goto(s,6)
exten => 600,1,Playback(demo-echotest)
exten => 600,n,Echo
exten => 600,n,Playback(demo-echodone)
exten => 600,n,Goto(s,6)
exten => 76245,1,Macro(page,SIP/Grandstream1)
exten => _7XXX,1,Macro(page,SIP/${EXTEN})
exten => 7999,1,Set(TIMEOUT(absolute)=60)
exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n|d)
exten => 8500,1,VoicemailMain
exten => 8500,n,Goto(s,6)
[page]
exten => _X.,1,Macro(page,SIP/${EXTEN})
[asterisk_guitools]
exten => executecommand,1,System(${command})
exten => executecommand,n,Hangup()
exten => record_vmenu,1,Answer
exten => record_vmenu,n,Playback(vm-intro)
exten => record_vmenu,n,Record(${var1})
exten => record_vmenu,n,Playback(vm-saved)
exten => record_vmenu,n,Playback(vm-goodbye)
exten => record_vmenu,n,Hangup
exten => play_file,1,Answer
exten => play_file,n,Playback(${var1})
exten => play_file,n,Hangup
[default]
exten => s,1,Hangup()
[numberplan-local]
ignorepat => 9
include => default
comment => Local Calling
exten = _9NXXXXXX,1,Macro(trunkdial,${trunk_1}/${EXTEN:1})
[numberplan-longdistance]
ignorepat => 9
include => numberplan-local
comment = Long Distance
exten = _91NXXNXXXXXX,1,Macro(trunkdial,${trunk_1}/${EXTEN:1})
[numberplan-international]
ignorepat => 9
include => numberplan-longdistance
comment = International
exten = _9011.,1,Macro(trunkdial,${trunk_1}/${EXTEN:1})
[numberplan-iaxtel]
ignorepat => 9
include => default
comment => IAXtel VoIP
exten = _91700NXXXXXX,1,Macro(trunkdial,${trunk_2}/${EXTEN:1})
[numberplan-custom-1]
plancomment = Default DialPlan
include = default
include = parkedcalls
; DIALPLAN FOR IVR-RECORD CALLS
[IVR-prompt-main]
exten => s,1,Answer()
exten => s,n,Wait(2)
exten => s,n,Background(custom/press-1)
exten => s,n,Background(custom/to-hear-cur-ancmnt)
exten => s,n,Wait(0.5)
exten => s,n,Background(custom/press-2)
exten => s,n,Background(custom/to-rerec-this-ancmt)
exten => s,n,Goto(s,2)
exten => 1,1,Goto(IVR-prompt-plback,s,1)
exten => 2,1,Goto(IVR-prompt-rec,s,1)
exten => i,1,Playback(invalid)
exten => i,2,Goto(s,2)
exten => t,1,Goto(s,2)
[IVR-prompt-plback]
;playback the IVR Recording File
exten => s,1,Playback(${RECORDED_FILE})
exten => s,n,Goto(IVR-prompt-main,s,2)
[IVR-prompt-rec]
; record the IVR to a gsm file
exten => s,1,GotoIf($["${RECORDED_FILE}"=""]?record:recordagain)
exten => s,n,Wait(1)
exten => s,n(record),Record(/var/lib/postel/http/audio/ivr/${CDR(accountcode)}_%d_${STRFTIME(${EPOCH},,%d%m%Y_%H%M%S)}:gsm||180)
exten => s,n,Goto(IVR-prompt-plback,s,1)
exten => s,n(recordagain),Record(${RECORDED_FILE}.gsm||180)
exten => s,n,Goto(IVR-prompt-plback,s,1)
;END DIALPLAN FOR IVR-RECORD CALLS
;DISA DIALPLAN
[DISA]
exten => s,1,Answer()
exten => s,n,Wait(1)
exten => s,n,Playback(silence/1)
exten => s,n(disaval),NoOp(${Dialplan})
exten => s,n,Set(DISACALLFLAG = "true")
exten => s,n,DISA(no-password,${Dialplan})
#include "extensions-incoming.conf"
#include "dialplans-outgoing.conf"
#include "extensions-postel.conf"