Asterisk 11.22 with Entware + Callcentric

Hello

I am encountering a couple of problems with a new installation of asterisk. I am new to the system. My intent is to have a rather small SIP phone system with version 11.22 hosted on my router. I have walked through a tutorial from Callcentric regarding simplified configuration and appear to have problems with both incoming and outgoing calls: In order to work with a single problem at a time I have included everything for the incoming test call through Callcentric.

Incoming calls result in the following simplified error message:

== Using SIP RTP CoS mark 5
– Executing [s@from-callcentric:1] Dial(“SIP/callcentric.com-00000004”, “SIP/10”) in new stack
[Feb 6 20:39:29] WARNING[886][C-00000006]: chan_sip.c:6034 create_addr: Purely numeric hostname (10), and not a peer–rejecting!
[Feb 6 20:39:29] WARNING[886][C-00000006]: app_dial.c:2455 dial_exec_full: Unable to create channel of type ‘SIP’ (cause 20 - Subscriber absent)
== Everyone is busy/congested at this time (1:0/0/1)
– Auto fallthrough, channel ‘SIP/callcentric.com-00000004’ status is ‘CHANUNAVAIL’

=============sip.conf==================

;Callcentric Configuraiton
[general]
context=from-callcentric
dtmfmode = rfc2833
allowoverlap=no
allowexternaldomains=yes
udpbindaddr=0.0.0.0

tcpenable=no
tcpbindaddr=0.0.0.0

transport=udp
srvlookup=yes

register => 1777XXXXXX:PASSWORD@callcentric.com
session-timers=refuse

[callcentric]
type=peer
context=from-callcentric
host=alpha19.callcentric.com
username=1777XXXXXX
fromuser=1777XXXXXXX
secret=PASSWORD
insecure=port,invite
disallowed_methods=UPDATE
directmedia=no
videosupport=no
disallow=all
allow=ulaw

[100]
context=to-callcentric
type=friend
defaultuser=100
secret=PASSWORD
host=dynamic

=================extensions.conf====================

;[default]
;exten => s,1,Answer()

[from-callcentric]
exten => s,1,Dial(SIP/10)

[to-callcentric]
exten => _1777XXXXXX,1,Dial(SIP/${EXTEN}@callcentric.com)

==================asterisk.conf=====================
directories
astetcdir => /opt/etc/asterisk
astmoddir => /opt/lib/asterisk/modules
astvarlibdir => /opt/lib/asterisk
astdbdir => /opt/lib/asterisk
astkeydir => /opt/lib/asterisk
astdatadir => /opt/lib/asterisk
astagidir => /opt/lib/asterisk/agi-bin
astspooldir => /opt/var/spool/asterisk
astrundir => /opt/var/run/asterisk
astlogdir => /opt/var/log/asterisk
astsbindir => /opt/sbin

[options]
;verbose = 3
;debug = 3
;alwaysfork = yes ; Same as -F at startup.
;nofork = yes ; Same as -f at startup.
;quiet = yes ; Same as -q at startup.
;timestamp = yes ; Same as -T at startup.
;execincludes = yes ; Support #exec in config files.
;console = yes ; Run as console (same as -c at startup).
;highpriority = yes ; Run realtime priority (same as -p at
; startup).
;initcrypto = yes ; Initialize crypto keys (same as -i at
; startup).
;nocolor = yes ; Disable console colors.
;dontwarn = yes ; Disable some warnings.
;dumpcore = yes ; Dump core on crash (same as -g at startup).
;languageprefix = yes ; Use the new sound prefix path syntax.
;systemname = my_system_name ; Prefix uniqueid with a system name for
; Global uniqueness issues.
autosystemname = yes ; Automatically set systemname to hostname,
; uses ‘localhost’ on failure, or systemname if
; set.
;mindtmfduration = 80 ; Set minimum DTMF duration in ms (default 80 ms)
; If we get shorter DTMF messages, these will be
; changed to the minimum duration
;maxcalls = 10 ; Maximum amount of calls allowed.
;maxload = 0.9 ; Asterisk stops accepting new calls if the
; load average exceed this limit.
;maxfiles = 1000 ; Maximum amount of openfiles.
;minmemfree = 1 ; In MBs, Asterisk stops accepting new calls if
; the amount of free memory falls below this
; watermark.
;cache_record_files = yes ; Cache recorded sound files to another
; directory during recording.
;record_cache_dir = /tmp ; Specify cache directory (used in conjunction
; with cache_record_files).
;transmit_silence = yes ; Transmit silence while a channel is in a
; waiting state, a recording only state, or
; when DTMF is being generated. Note that the
; silence internally is generated in raw signed
; linear format. This means that it must be
; transcoded into the native format of the
; channel before it can be sent to the device.
; It is for this reason that this is optional,
; as it may result in requiring a temporary
; codec translation path for a channel that may
; not otherwise require one.
;transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of
; directly.
;runuser = asterisk ; The user to run as.
;rungroup = asterisk ; The group to run as.
;lightbackground = yes ; If your terminal is set for a light-colored
; background.
;forceblackbackground = yes ; Force the background of the terminal to be
; black, in order for terminal colors to show
; up properly.
;defaultlanguage = en ; Default language
documentation_language = en_US ; Set the language you want documentation
; displayed in. Value is in the same format as
; locale names.
;hideconnect = yes ; Hide messages displayed when a remote console
; connects and disconnects.
;lockconfdir = no ; Protect the directory containing the
; configuration files (/etc/asterisk) with a
; lock.
;stdexten = gosub ; How to invoke the extensions.conf stdexten.
; macro - Invoke the stdexten using a macro as
; done by legacy Asterisk versions.
; gosub - Invoke the stdexten using a gosub as
; documented in extensions.conf.sample.
; Default gosub.
;live_dangerously = no ; Enable the execution of ‘dangerous’ dialplan
; functions from external sources (AMI,
; etc.) These functions (such as SHELL) are
; considered dangerous because they can allow
; privilege escalation.
; Default yes, for backward compatability.

; Changing the following lines may compromise your security.
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = asterisk.ctl

[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6

You are trying to call a peer named “10” but your peer is named “100” in sip.conf. If you change it in the from-callcentric context to SIP/100 it should work, provided it is registered.

Thankyou!

Looks much better.

Now I am using Zoiper as a soft phone for testing which I have configured with the extension 100 and is registered.
Should Zoiper “ring” or provide a notification of the incoming SIP call? I am open to working with anything for testing purposes.

Connected to Asterisk 11.22.0 currently running on HomeServer (pid = 30944)
== Using SIP RTP CoS mark 5
– Executing [s@from-callcentric:1] Dial(“SIP/callcentric.com-00000000”, “SIP/100”) in new stack
== Using SIP RTP CoS mark 5
– Called SIP/100
== Spawn extension (from-callcentric, s, 1) exited non-zero on ‘SIP/callcentric.com-00000000’
[Feb 7 06:47:59] WARNING[30965]: chan_sip.c:4037 retrans_pkt: Retransmission timeout reached on transmission 4f308f261f1385c2269152df4a8244f2@73.32.77.203:5060 for seqno 102 (Critical Request) – See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32002ms with no response
[Feb 7 06:48:19] WARNING[30965]: chan_sip.c:4037 retrans_pkt: Retransmission timeout reached on transmission 2afb8c17739dff21761717bb250abe0f@204.11.192.132 for seqno 102 (Critical Response) – See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32014ms with no response

I suppose it would be best to have calls placed into a queue which can be answered by any SIP phone registered on the network. Is this possible? Suggestions on implementing the dialplan for this?

If the device is behind NAT then it needs “nat=comedia,force_rport” in its peer section in sip.conf. Otherwise you will see exactly the behavior you are seeing.

As for a queue you can Dial multiple devices by specifying them to Dial in a list each separated by &, for example SIP/1000&SIP/2000&SIP/3000

Very helpful, thank you again! Incoming calls work just fine now.

Now for the other direction. I realize, based on the message, that it would seem I am attempting to contact an extension; however, the intent is to make an outside call.

I assume more is required on the dial plan within extension.conf?

[to-callcentric]
exten => _1777XXXXXXX,1,Dial(SIP/${EXTEN}@callcentric.com)

I suppose if the above piece is ok then it must be something within sip.conf?
Within my sip.conf I have a peer for callcentric but only the from-callcentric context is here.
Shall I add the context “to-callcentric” to this peer as well? Should it be a new peer?

Maybe something like this?

[callcentric-default]
host=alpha19.callcentric.com
username=1777XXXXXX
fromuser=1777XXXXXX
secret=SECRET
nat=comedia,force_rport
insecure=port,invite
disallowed_methods=UPDATE
directmedia=no
videosupport=no
disallow=all
allow=ulaw

[callcentric-in] (callcentric-default)
type=peer
context=from-callcentric

[callcentric-out] (callcentric-default)
type=peer
context=to-callcentric

I suppose this is possibly compounded by the NAT too?

FYI: The previous incoming call was fine, I just did not accept it.

Generally you will not use a direct SIP address, as you will need to handle registration and passwords. You would normally have a section in sip.conf for the ITSP peer. (Note that sip.conf does not contain extensions, even though some of the devices listed may be called extensions by end users.)

Server*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
callcentric.com:5060                    N      1777XXXXXX         45 Registered           Wed, 08 Feb 2017 06:10:22
1 SIP registrations.

So the Callcentric ITSP is registered with Asterisk, I assume. I also assumed the SIP.conf contains any “endpoint” SIP device or ITSP peer I plan to use. Physical devices and soft phones are registered just the same as peers. I am a bit confused regarding contexts, which seems to be part of the problem here. So far I have only seen a single context associated with a peer.

For example:

[callcentric]
type=peer
context=from-callcentric
host=alpha19.callcentric.com
username=1777XXXXXX
fromuser=1777XXXXXX
secret=SECRET
nat=comedia,force_rport
insecure=port,invite
disallowed_methods=UPDATE
directmedia=no
videosupport=no
disallow=all
allow=ulaw

This apparently is used only for incoming connections. According to Callcentric, https://www.callcentric.com/support/device/asterisk/1_8, the suggested format for outgoing calls is to be performed as follows within the Dialplan, extensions.conf:

exten => _9X,n,Dial(SIP/${EXTEN}@alpha19.callcentric.com)

I agree with you, leaving out credentials would seem to pose a problem here, but according to the documentation, apparently not.

At any rate, it would seem something is incorrect or incomplete on my part:

exten => _9X,n,Dial(SIP/${EXTEN}@alpha19.callcentric.com)

[Feb 8 06:07:48] NOTICE[4208][C-00000008]: chan_sip.c:25859 handle_request_invite: Call from '100' (192.168.1.10:62607) to extension '912816396304' rejected because extension not found in context 'to-callcentric'.

Shall I provide further details from the CLI debug?

Your pattern only matches 2 digit numbers. You need a trailing “.”.

Ah, that is an important syntax note.

Able to take incoming and make outgoing calls now through Callcentric and G-Voice. :grin:

Thank you very much for your help!