[Freeswitch-users] Overriding hangup cause in CDR logs

Martin Paterson martin at pattersong.co.uk
Mon Nov 8 14:04:16 UTC 2021


David is right, the hangup cause for the a-leg is ORIGINATOR_CANCEL
because that's what actually happened to the a-leg. However the CDR
for the b-leg will show the hangup cause that you expect. I think by
default b-leg CDRs aren't generated, but you can turn them on in
config.

Martin.

Martin Paterson, Pattersong Music
Reduced orchestrations of G&S

On Sat, 6 Nov 2021 at 02:02, David Villasmil
<david.villasmil.work at gmail.com> wrote:
>
> The fact is A is hanging up the call. I don’t think you can actually change this without changing FS source code to override it.
>
>
> On Sat, 6 Nov 2021 at 01:20, Rahman Duran <rahman.duran at erzurum.edu.tr> wrote:
>>
>> Hi,
>>
>> Bump. Any hints on this?
>>
>> Regards,
>>
>> Rahman
>>
>> Rahman Duran <rahman.duran at erzurum.edu.tr>, 26 Eki 2021 Sal, 09:14 tarihinde şunu yazdı:
>>>
>>> Hi,
>>>
>>> I am using announcements for fail hungup causes like busy, no_answer etc. Here is my dial plan
>>>
>>> <extension name="local_accounts_freeswitch">
>>>       <condition regex="all">
>>>         <regex field="destination_number" expression="^[0-9]{4}$"/>
>>>         <regex field="${local_user_exists}" expression="^true$|^TRUE$|^True$"/>
>>>         <regex field="${santral_kontrol}" expression="^freeswitch$"/>
>>>         <action application="set" inline="true" data="call_pickup_group=${user_data(${destination_number}@${domain_name} var call_pickup_group)}"/>
>>>         <action application="hash" data="insert/${domain_name}-last_dial/${caller_id_number}/${destination_number}"/>
>>>         <action application="hash" data="insert/${domain_name}-group_pickup_last_uuid/${call_pickup_group}/${uuid}"/>
>>>         <action application="hash" data="insert/${domain_name}-pickup_last_uuid/${destination_number}/${uuid}"/>
>>>         <action application="log" data="ep_codec_string -- ${ep_codec_string}" />
>>>         <action application="set" data="inherit_codec=true"/>
>>>         <action application="export" data="nolocal:absolute_codec_string=${ep_codec_string}"/>
>>>         <action application="set_profile_var" data="callee_id_name=${user_data(${destination_number}@${domain_name} var effective_caller_id_name)}"/>
>>>         <action application="set" data="hangup_after_bridge=true"/>
>>>         <action application="set" data="continue_on_fail=true"/>
>>>         <action application="set" data="call_timeout=30"/>
>>>         <action application="set" data="execute_on_answer=sched_hangup +21600 alloted_timeout" />
>>>         <action application="bridge" data="{origination_callee_id_name=${user_data(${destination_number}@${domain_name} var effective_caller_id_name)}}user/${destination_number}@${domain_name}"/>
>>>         <action application="execute_extension" data="hata-${originate_disposition} XML hata_anonslari"/>
>>>       </condition>
>>>     </extension>
>>>
>>> And here is announcements context that  I handle hangup causes:
>>>
>>> <include>
>>>   <!-- Burada iç çağrılarda alınan hata durumlarının anonsları işlenecek.
>>>     -->
>>>   <context name="hata_anonslari">
>>>     <!-- yerel dahili  -->
>>>     <extension name="error-causes-user_busy">
>>>       <condition field="destination_number" expression="^hata-USER_BUSY$">
>>>         <action application="export" data="cdr_hata_anonsu=USER_BUSY"/>
>>>         <action application="pre_answer"/>
>>>         <action application="playback" data="$${anons_dosya_yolu}/user_busy.wav"/>
>>>         <action application="sleep" data="1000"/>
>>>         <action application="hangup" data="${originate_disposition}"/>
>>>       </condition>
>>>     </extension>
>>>     <extension name="error-causes-no_answer">
>>>       <condition field="destination_number" expression="^hata-NO_ANSWER$">
>>>         <action application="export" data="cdr_hata_anonsu=NO_ANSWER"/>
>>>         <action application="pre_answer"/>
>>>         <action application="playback" data="$${anons_dosya_yolu}/no_answer.wav"/>
>>>         <action application="sleep" data="1000"/>
>>>         <action application="hangup" data="${originate_disposition}"/>
>>>       </condition>
>>>     </extension>
>>>     <extension name="error-causes-user_not_registered">
>>>       <condition field="destination_number" expression="^hata-USER_NOT_REGISTERED$">
>>>         <action application="export" data="cdr_hata_anonsu=USER_NOT_REGISTERED"/>
>>>         <action application="pre_answer"/>
>>>         <action application="playback" data="$${anons_dosya_yolu}/user_not_registered.wav"/>
>>>         <action application="sleep" data="1000"/>
>>>         <action application="hangup" data="${originate_disposition}"/>
>>>       </condition>
>>>     </extension>
>>>     <extension name="error-causes-any">
>>>       <condition field="destination_number" expression="^hata-(.*)$">
>>>         <action application="export" data="cdr_hata_anonsu=${originate_disposition}"/>
>>>         <action application="hangup" data="${originate_disposition}"/>
>>>       </condition>
>>>     </extension>
>>>   <!-- context hata_anonslari sonu -->
>>>   </context>
>>> </include>
>>>
>>>
>>> The problem is if the calling leg does not listen the announcement to the end and hangup, CDR logs shows "Originator Cancel" as hangup cause. As I already know the real hangup cause, how can I override the CDR hangup cause with the real one? For now I am setting another variable (cdr_hata_anonsu) and added it to CDR logs, but if possible I want to fix this with a real solution.
>>>
>>> Regards,
>>>
>>> Rahman Duran
>>
>> _________________________________________________________________________
>>
>> The FreeSWITCH project is sponsored by SignalWire https://signalwire.com
>> Enhance your FreeSWITCH install with disruptive priced SMS and PSTN services.
>> Build your next product on our scalable cloud platform.
>>
>> Join our online community to chat in real time https://signalwire.community
>>
>> Professional FreeSWITCH Services
>> sales at freeswitch.com
>> https://freeswitch.com
>>
>> Official FreeSWITCH Sites
>> https://freeswitch.com/oss
>> https://freeswitch.org/confluence
>> https://cluecon.com
>>
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> https://freeswitch.com
>
> --
> Regards,
>
> David Villasmil
> email: david.villasmil.work at gmail.com
> phone: +34669448337
> _________________________________________________________________________
>
> The FreeSWITCH project is sponsored by SignalWire https://signalwire.com
> Enhance your FreeSWITCH install with disruptive priced SMS and PSTN services.
> Build your next product on our scalable cloud platform.
>
> Join our online community to chat in real time https://signalwire.community
>
> Professional FreeSWITCH Services
> sales at freeswitch.com
> https://freeswitch.com
>
> Official FreeSWITCH Sites
> https://freeswitch.com/oss
> https://freeswitch.org/confluence
> https://cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> https://freeswitch.com



More information about the FreeSWITCH-users mailing list