asterisk-chan-dongle/etc/extensions.conf

187 lines
7.7 KiB
Plaintext
Raw Permalink Normal View History

2023-05-25 08:30:27 +00:00
; this is chunks of Asterisk extensions.conf file for show some chan_dongle features
[general]
[dongle-incoming]
; example of ussd receive
exten => ussd,1,Set(type=${USSD_TYPE})
; values from 0 till 5
; 0 - 'USSD Notify'
; 1 - 'USSD Request'
; 2 - 'USSD Terminated by network'
; 3 - 'Other local client has responded'
; 4 - 'Operation not supported'
; 5 - 'Network time out'
exten => ussd,n,Set(typestr=${USSD_TYPE_STR})
; type in string, see above
exten => ussd,n,Set(ussd=${USSD})
; USSD text, but may be truncated by first \n
exten => ussd,n,Set(ussd_multiline=${BASE64_DECODE(${USSD_BASE64})})
; USSD text, may be multiline
; Note: this exten run in Local channel not attached to anything, also all CALLERID() is empty
exten => ussd,n,Hangup
; example of sms receive
exten => sms,1,Set(sms=${SMS})
; SMS text, but may be truncated by first \n
exten => sms,n,Set(sms_multiline=${BASE64_DECODE(${SMS_BASE64})})
; SMS text, may be multiline
exten => sms,n,Set(raw_cmgr_message=${CMGR})
; raw CMGR message from dongle
; Note: this exten run in Local channel not attached to anything, also CALLERID(num) is address of SMS originator
exten => sms,n,Hangup
; example of begining context execution from not default exten
exten => +12345678901,1,Verbose(This exten executed if Subscriber Number is available and equal +12345678901 or exten setting value is +12345678901)
exten => +12345678901,n,Hangup
; example of channel variables setting by chan_dongle
exten => s,1,Set(NAME_OF_DEVICE=${DONGLE0_STATUS})
; for example 'dongle0' or 'dongle1' see dongle.conf
exten => s,n,Set(NAME_OF_PROVIDE=${DONGLEPROVIDER})
; for example see output of cli 'dongle show devices' column "Provider Name"
exten => s,n,Set(IMEI_OF_DEVICE=${DONGLEIMEI})
; for example see output of cli 'dongle show devices' column "IMEI"
exten => s,n,Set(IMSI_OF_SIMCARD=${DONGLEIMSI})
; for example see output of cli 'dongle show devices' column "IMSI"
exten => s,n,Set(SUBSCRIBER_NUMBER=${DONGLENUMBER})
; Subscriber Number example see output of cli 'dongle show devices' column "Number"
; may be empty, use for save in SIM commands AT+CPBS="ON" and AT+CPBW=1,"+123456789",145
exten => s,n,Set(CNUM_NUMBER=${CALLERID(dnid)})
; Set to Subscriber Number if available
; applications of chan_dongle
exten => s,n,DongleStatus(dongle0,DONGLE0_STATUS)
exten => s,n,DongleStatus(g1,DONGLE1_STATUS)
exten => s,n,DongleStatus(r1,DONGLE2_STATUS)
exten => s,n,DongleStatus(p:PROVIDER NAME,DONGLE3_STATUS)
exten => s,n,DongleStatus(i:123456789012345,DONGLE4_STATUS)
exten => s,n,DongleStatus(s:25099,DONGLE5_STATUS)
; for first argument see Dial() Resource part of dial string
; get status of device and store result in variable
; possible values of ${DONGLE0_STATUS}
; -1 invalid argument
; 1 device not found
; 2 device connected and free
; 3 device connected and in use
exten => s,n,DongleSendSMS(dongle0,+18004005422,"Hello how are you, Danila?",1440,yes,"SomeMagicMessageID")
; send SMS on selected device and to specified number
; device name of Dongle device
; destination number in International format with leading '+' or w/o leading '+'
; message maximum 70 UCS-2 symbols
; validity period in minutes, will be round up to nearest possible value, optional default is 3 days
; report request if true report for this SMS is required, optional default is not
; functions of chan_dongle
exten => s,n,GotoIf($["${CHANNEL(callstate)}" = "waiting"]?waiting-call)
; now we provide channel function argument callstate
; possible values
; active ; enjoy and speek
; held ; this call is held
; dialing ; for outgoing calls
; alerting ; for outgoing calls, number dialed and called party ringing
; incoming ; for incoming calls
; waiting ; for incoming waiting calls;
; if callwaiting=no channels for waiting calls never created
; initialize ; never appear
; released ; never appear
; Answer on waiting call activate this call and place any other active calls
; on hold, but execution of dialplan for these calls not break stopped or frozen
; When active call terminated one of held becomes active.
exten => s,n,Set(CHANNEL(callstate)=active)
; if callstate is 'held' you can assign new value 'active'
; its mean activate this call and place on hold all other active calls but
; execution of dialplan for these calls not break stopped or frozen
exten => s,n,GotoIf($["${CHANNEL(dtmf)}" != "off"]?turn_off_dtmf)
; you can read actual value of DTMF detection settings
; possible values
; off ; DTMF detection is off
; inband ; detect DTMF inband
; relax ; detect DTMF inband with relax option as defined in main asterisk docs
exten => s,n,Set(CHANNEL(dtmf)=off)
; example usage of assign to channel local DTMF settings
; this not overwrite global config file settings and apply only for this channel
exten => s,n,Dial(Dongle/dongle0/+79139131234)
exten => s,n,Dial(Dongle/g1/+79139131234)
exten => s,n,Dial(Dongle/r1/879139131234)
exten => s,n,Dial(Dongle/p:PROVIDER NAME/+79139131234)
exten => s,n,Dial(Dongle/i:123456789012345/+79139131234)
exten => s,n,Dial(Dongle/s:25099/+79139131234)
; make outgoing call
; name on device with this name
; g1 on first free device in group 1
; r1 round robin devices in group 1
; p: with first free device with Operator name beggining with name
; i: with device exactly matched IMEI
; s: with first free device with IMSI prefix
exten => s,n,Dial(Dongle/g1/holdother:+79139131234)
exten => s,n,Dial(Dongle/r1/holdother:+79139131234)
exten => s,n,Dial(Dongle/p:PROVIDER NAME/holdother:+79139131234)
exten => s,n,Dial(Dongle/i:123456789012345/holdother:+79139131234)
exten => s,n,Dial(Dongle/s:25099/holdother:+79139131234)
; now we add option 'holdother' for dialing
; this option do
; 1) When looking for available devices by group, provider IMEI,
; IMSI prefix not ignore devices with whose state does not
; prohibit a new outgoing call when other call place on hold
;
; 2) Before actual dialing place active calls on hold
; but execution of dialplan for these calls not break stopped or frozen
; 3) This call will be active if succesfully answered
; BUG !!!
; tested for call waiting and hold features Huawei E1550 has a next bug:
; When local side hangup any call including held call ALL other calls LOST sound
; When remove side hangup active call ALL other calls LOST sound
; Please double check true this for you or not
; If true reduce usage of this useful features
exten => s,n,Dial(Dongle/g1/conference:+79139131234)
exten => s,n,Dial(Dongle/r1/conference:+79139131234)
exten => s,n,Dial(Dongle/p:PROVIDER NAME/conference:+79139131234)
exten => s,n,Dial(Dongle/i:123456789012345/conference:+79139131234)
exten => s,n,Dial(Dongle/s:25099/conference:+79139131234)
; and also option 'conference' added
; this option do
; 1) When looking for available devices by group, provider IMEI,
; IMSI prefix not ignore devices with whose state does not
; prohibit a new outgoing call when other call place on hold
;
; 2) Before actual dialing place active calls on hold
; but execution of dialplan for these calls not break stopped or frozen
; 3) If answered attach hold calls to conrefence (in term of GSM)
; Also if created outgoing channel place call on same device that incoming channel
; both incoming and outgoing channels become readonly to avoid the voice loop.
;
; see also BUG !!! note above
exten => s,n,Hangup