Paging is implemented by creating a conference!
But does Page for a dial plan support dtmf tones? That seemed to be the limitation.
You need to expand on what you mean by “support DTMF tones”. I assume conference will pass them through, so I assume Page will.
I will have to do some more digging. I need to pass DTMF tones to an intercom zone, and my experience is that this does not work through Page, but it does through the conference. I have the endpoints picking up with the posted configs but have not come up with a way to have the initiator terminate all connections when the call is hung up. Interestingly, although it doesn’t make sense to me, a listener can terminate the call when they hang up, but that is the opposite of what I need. It would be simpler if Page passed DTMF, but I have not found a way to get that to work.
I failed to mention that I need to include the # and 0 DTMF tones in the dial plan when the connection is made. The end user is not supplying those tones. That is why it seemed to me from my research that the conference and dial app were the right choice for my application. Tell me if I am mistaken and there’s a simpler way to accomplish what I need to do
I don’t really understand what you are trying to do. Maybe someone else has a clearer idea of the requirements.
Are you aware of the SendDTMF application?
I apologize for the confusion. As of this post my conference/dial dial plan is working correctly. However, I am still looking for a way to disconnect all users when the caller hangs up. Currently that does not work, but if an endpoint hangs up, all connections are terminated, the opposite of what I need.
Here are my current configs and logs:
Extensions.conf
[Lynd-default]
exten => 9001,1,NoOp(Setting up a conference for 501 and 502 ring groups)
same => n,Answer()
same => n,Set(CALLERID(all)=“Raymond Norton” <905>)
same => n,Set(PJSIP_HEADER(add,From)=sip:905@3CXPublicIP)
same => n,Originate(PJSIP/Lynd-trunk/sip:2222222222@3CXPublicIP,exten,add-to-conference,1)
same => n,Originate(PJSIP/Lynd-trunk/sip:3333333333@3CXPublicIP,exten,add-to-conference,1)
same => n,ConfBridge(9000,bridge_profile,user_profile)
same => n,Hangup()
[add-to-conference]
exten => 1,1,NoOp(Adding a channel to the conference)
same => n,Answer()
same => n,Wait(1) ; Allow a moment for the endpoint to answer
same => n,SendDTMF(#) ; Send DTMF tone ‘#’
same => n,SendDTMF(0) ; Send DTMF tone ‘0’
same => n,ConfBridge(9000,bridge_profile,listener_profile)
same => n,Hangup()
exten => h,1,NoOp(Cleaning up after conference ends)
same => n,ExecIf($[“${BRIDGEPEER}” = “”]?System(/usr/sbin/asterisk -rx ‘confbridge kick 9000 all’)) ; Kick all only if this is the originating channel
same => n,Hangup()
Confbridge.conf:
[bridge_profile]
type=bridge
sound_join=no
sound_leave=no
sound_only_person=no ; Suppress “only person in the conference” message
end_marked=yes
[user_profile]
type=user
marked_user=yes ; Ensures conference ends when caller hangs up
dtmf_passthrough=yes
announce_join_leave=no
music_on_hold_class=none
talk_detection_events=no
[listener_profile]
type=user
marked_user=no
dtmf_passthrough=yes
announce_join_leave=no
music_on_hold_class=none
talk_detection_events=no
Logs:
– Executing [9001@Lynd-default:1] NoOp(“PJSIP/Lynd-trunk-00000095”, “Setting up a conference for 501 and 502 ring groups”) in new stack
– Executing [9001@Lynd-default:2] Answer(“PJSIP/Lynd-trunk-00000095”, “”) in new stack
– Executing [9001@Lynd-default:3] Set(“PJSIP/Lynd-trunk-00000095”, “CALLERID(all)=“Raymond Norton” <905>”) in new stack
– Executing [9001@Lynd-default:4] Set(“PJSIP/Lynd-trunk-00000095”, “PJSIP_HEADER(add,From)=sip:905@3CXPublicIP”) in new stack
– Executing [9001@Lynd-default:5] Originate(“PJSIP/Lynd-trunk-00000095”, “PJSIP/3cx-trunk/sip:2222222222@3CXPublicIP,exten,add-to-conference,1”) in new stack
– PJSIP/3cx-trunk-00000096 answered
– Executing [1@add-to-conference:1] NoOp(“PJSIP/3cx-trunk-00000096”, “Adding a channel to the conference”) in new stack
– Executing [1@add-to-conference:2] Answer(“PJSIP/3cx-trunk-00000096”, “”) in new stack
– Executing [1@add-to-conference:3] Wait(“PJSIP/3cx-trunk-00000096”, “1”) in new stack
– Executing [9001@Lynd-default:6] Originate(“PJSIP/Lynd-trunk-00000095”, “PJSIP/3cx-trunk/sip:3333333333@3CXPublicIP,exten,add-to-conference,1”) in new stack
– Called 3cx-trunk/sip:3333333333@3CXPublicIP
– PJSIP/3cx-trunk-00000097 is ringing
– Executing [1@add-to-conference:4] SendDTMF(“PJSIP/3cx-trunk-00000096”, “#”) in new stack
– Executing [1@add-to-conference:5] SendDTMF(“PJSIP/3cx-trunk-00000096”, “0”) in new stack
– Executing [1@add-to-conference:6] ConfBridge(“PJSIP/3cx-trunk-00000096”, “9000,bridge_profile,listener_profile”) in new stack
– PJSIP/3cx-trunk-00000097 answered
– Executing [1@add-to-conference:1] NoOp(“PJSIP/3cx-trunk-00000097”, “Adding a channel to the conference”) in new stack
– Executing [1@add-to-conference:2] Answer(“PJSIP/3cx-trunk-00000097”, “”) in new stack
– Executing [1@add-to-conference:3] Wait(“PJSIP/3cx-trunk-00000097”, “1”) in new stack
– Executing [9001@Lynd-default:7] ConfBridge(“PJSIP/Lynd-trunk-00000095”, “9000,bridge_profile,user_profile”) in new stack
– Channel PJSIP/Lynd-trunk-00000095 joined ‘softmix’ base-bridge
– Executing [1@add-to-conference:4] SendDTMF(“PJSIP/3cx-trunk-00000097”, “#”) in new stack
– Executing [1@add-to-conference:5] SendDTMF(“PJSIP/3cx-trunk-00000097”, “0”) in new stack
– Executing [1@add-to-conference:6] ConfBridge(“PJSIP/3cx-trunk-00000097”, “9000,bridge_profile,listener_profile”) in new stack
– Executing [h@add-to-conference:1] NoOp(“PJSIP/3cx-trunk-00000097”, “Cleaning up after conference ends”) in new stack
– Executing [h@add-to-conference:2] ExecIf(“PJSIP/3cx-trunk-00000097”, “1?System(/usr/sbin/asterisk -rx ‘confbridge kick 9000 all’)”) in new stack
– Executing [h@add-to-conference:3] Hangup(“PJSIP/3cx-trunk-00000097”, “”) in new stack
– Executing [9001@Lynd-default:8] Hangup(“PJSIP/Lynd-trunk-00000095”, “”) in new stack
– Executing [h@add-to-conference:3] Hangup(“PJSIP/3cx-trunk-00000096”, “”) in new stack
I got things working with the following confbridge.conf:
[bridge_profile]
type=bridge
sound_join=no
sound_leave=no
sound_only_person=no ; Suppress “only person in the conference” message
sound_kicked=nosound.slin
[user_profile]
type=user
marked=yes
dtmf_passthrough=yes
announce_join_leave=no
music_on_hold_class=none
talk_detection_events=no
[listener_profile]
type=user
marked=no
end_marked=yes
dtmf_passthrough=yes
announce_join_leave=no
music_on_hold_class=none
talk_detection_events=no
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.