Outbound e911

Status
Not open for further replies.

PBXMePlz

Member
Mar 1, 2019
102
10
18
32
Hey so, I'm having problems with e911 outbound. I enabled it on my provider which works just fine outbound normally, but when dialing 933 my phone is getting a 404 Error (Grandstream). The provider logs aren't showing any failed attempts which makes me think the issue is with the PBX.
I have a caller ID name and number under the extension I'm dialing from.

Below is a dumped log, thoughts?

2020-08-12 15:19:17.532714 [INFO] mod_dialplan_xml.c:637 Processing 101 <101>->933 in context [domain]
Dialplan: sofia/internal/101@[domain] parsing [[domain]->user_exists] continue=true
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_exists] ${loopback_leg}() =~ /^B$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_exists] () =~ // break=on-false
Dialplan: sofia/internal/101@[domain] Action set(user_exists=${user_exists id ${destination_number} ${domain_name}}) INLINE
EXECUTE [depth=0] sofia/internal/101@[domain] set(user_exists=false)
2020-08-12 15:19:17.572691 [DEBUG] mod_dptools.c:1672 SET sofia/internal/101@[domain] [user_exists]=[false]
Dialplan: sofia/internal/101@[domain] Action set(from_user_exists=${user_exists id ${sip_from_user} ${sip_from_host}}) INLINE
EXECUTE [depth=0] sofia/internal/101@[domain] set(from_user_exists=true)
2020-08-12 15:19:17.572691 [DEBUG] mod_dptools.c:1672 SET sofia/internal/101@[domain] [from_user_exists]=[true]
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_exists] ${user_exists}(false) =~ /^true$/ break=on-false
Dialplan: sofia/internal/101@[domain] parsing [[domain]->caller-details] continue=true
Dialplan: sofia/internal/101@[domain] Regex (PASS) [caller-details] ${caller_destination}() =~ /^$/ break=never
Dialplan: sofia/internal/101@[domain] Action set(caller_destination=${destination_number}) INLINE
EXECUTE [depth=0] sofia/internal/101@[domain] set(caller_destination=933)
2020-08-12 15:19:17.572691 [DEBUG] mod_dptools.c:1672 SET sofia/internal/101@[domain] [caller_destination]=[933]
Dialplan: sofia/internal/101@[domain] Action set(caller_id_name=${caller_id_name}) INLINE
EXECUTE [depth=0] sofia/internal/101@[domain] set(caller_id_name=101)
2020-08-12 15:19:17.572691 [DEBUG] mod_dptools.c:1672 SET sofia/internal/101@[domain] [caller_id_name]=[101]
Dialplan: sofia/internal/101@[domain] Action set(caller_id_number=${caller_id_number})
Dialplan: sofia/internal/101@[domain] parsing [[domain]->call-direction] continue=true
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [call-direction] ${call_direction}() =~ /^(inbound|outbound|local)$/ break=never
Dialplan: sofia/internal/101@[domain] ANTI-Action export(call_direction=local) INLINE
EXECUTE [depth=0] sofia/internal/101@[domain] export(call_direction=local)
2020-08-12 15:19:17.572691 [DEBUG] switch_channel.c:1310 EXPORT (export_vars) [call_direction]=[local]
Dialplan: sofia/internal/101@[domain] parsing [[domain]->global-variables] continue=true
Dialplan: sofia/internal/101@[domain] Regex (PASS) [global-variables] () =~ // break=on-false
Dialplan: sofia/internal/101@[domain] Action set(RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)})
Dialplan: sofia/internal/101@[domain] parsing [[domain]->domain-variables] continue=true
Dialplan: sofia/internal/101@[domain] Regex (PASS) [domain-variables] () =~ // break=on-false
Dialplan: sofia/internal/101@[domain] Action export(origination_callee_id_name=${destination_number})
Dialplan: sofia/internal/101@[domain] parsing [[domain]->is_loopback] continue=true
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [is_loopback] ${is_follow_me_loopback}() =~ /true/ break=on-false
Dialplan: sofia/internal/101@[domain] parsing [[domain]->user_record] continue=true
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_exists}(false) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_record}() =~ /^all$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_exists}(false) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${call_direction}(local) =~ /^inbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_record}() =~ /^inbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_exists}(false) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${call_direction}(local) =~ /^outbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_record}() =~ /^outbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_exists}(false) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${call_direction}(local) =~ /^local$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${user_record}() =~ /^local$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${from_user_exists}(true) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Action set(from_user_record=${user_data ${sip_from_user}@${sip_from_host} var user_record}) INLINE
EXECUTE [depth=0] sofia/internal/101@[domain] set(from_user_record=)
2020-08-12 15:19:17.572691 [DEBUG] mod_dptools.c:1672 SET sofia/internal/101@[domain] [from_user_record]=[UNDEF]
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${from_user_exists}(true) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${from_user_record}() =~ /^all$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${from_user_exists}(true) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${call_direction}(local) =~ /^inbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${from_user_record}() =~ /^inbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${from_user_exists}(true) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${call_direction}(local) =~ /^outbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${from_user_record}() =~ /^outbound$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${from_user_exists}(true) =~ /^true$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (PASS) [user_record] ${call_direction}(local) =~ /^local$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${from_user_record}() =~ /^local$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [user_record] ${record_session}() =~ /^true$/ break=on-false
Dialplan: sofia/internal/101@[domain] parsing [[domain]->redial] continue=true
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [redial] destination_number(933) =~ /^(redial|\*870)$/ break=on-true
Dialplan: sofia/internal/101@[domain] Regex (PASS) [redial] () =~ // break=never
Dialplan: sofia/internal/101@[domain] Action hash(insert/${domain_name}-last_dial/${caller_id_number}/${destination_number})
Dialplan: sofia/internal/101@[domain] parsing [[domain]->speed_dial] continue=false
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [speed_dial] destination_number(933) =~ /^\*0(.*)$/ break=on-false
Dialplan: sofia/internal/101@[domain] parsing [[domain]->default_caller_id] continue=true
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [default_caller_id] ${emergency_caller_id_number}([number]) =~ /^$/ break=never
Dialplan: sofia/internal/101@[domain] Regex (FAIL) [default_caller_id] ${outbound_caller_id_number}([number]) =~ /^$/ break=never
Dialplan: sofia/internal/101@[domain] parsing [[domain]->[provider].911] continue=false
Dialplan: sofia/internal/101@[domain] Regex (PASS) [[provider].911] ${user_exists}(false) =~ /false/ break=on-false
Dialplan: sofia/internal/101@[domain] Regex (PASS) [[provider].911] destination_number(933) =~ /(^911$|^933$)/ break=on-false
Dialplan: sofia/internal/101@[domain] Action set(sip_h_X-accountcode=${accountcode})
Dialplan: sofia/internal/101@[domain] Action export(call_direction=outbound)
Dialplan: sofia/internal/101@[domain] Action unset(call_timeout)
Dialplan: sofia/internal/101@[domain] Action set(hangup_after_bridge=true)
Dialplan: sofia/internal/101@[domain] Action set(effective_caller_id_name=${outbound_caller_id_name})
Dialplan: sofia/internal/101@[domain] Action set(effective_caller_id_number=${outbound_caller_id_number})
Dialplan: sofia/internal/101@[domain] Action set(inherit_codec=true)
Dialplan: sofia/internal/101@[domain] Action set(ignore_display_updates=true)
Dialplan: sofia/internal/101@[domain] Action set(callee_id_number=933)
Dialplan: sofia/internal/101@[domain] Action set(continue_on_fail=true)
Dialplan: sofia/internal/101@[domain] Action bridge(sofia/gateway/37c51852-43d2-4bd6-a714-bd71a84be22b/933)
 

Adrian Fretwell

Well-Known Member
Aug 13, 2017
1,498
413
83
Your log shows the call getting as far as the bridge statement, is there anything after this?

You say your provider is not showing any failures, would you expect to see 404s (AKA Wrong Numbers) logged?

The only sure way to diagnose is with a packet capture. sngrep is fine providing your box is not too busy.
 

PBXMePlz

Member
Mar 1, 2019
102
10
18
32
I hate to res a post, but I hate more to leave this "unresolved"; The issue was the callerid was not being passed through to the carrier, as the gateway needed to have callerID in from. Super weird by the way because outbound calls were working without issue.
 

Adrian Fretwell

Well-Known Member
Aug 13, 2017
1,498
413
83
Regulations have been tightened regarding caller ID, withing the last year or so, certainly here in the UK. So maybe your carrier started enforcing some new rules, which caused the issue. Glad you got it sorted.
 
Status
Not open for further replies.