--
-- This DSM app
-- o plays early media from a file in the DB
-- o replies with final reply code/reason from P-App-Param
--
-- Parameters (P-App-Param):
-- audio_id - indicating audio file in DB; must be wav 16 bit pcm format (with wav header)
-- fr_code - final reply code
-- fr_reason - final reply reason
--
-- Example: P-App-Param: audio_id=rbt;fr_code=404;fr_reason="Not found"
DB table is provisioning.audio_files, select by id, e.g.
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | varchar(20) | YES | | NULL | |
| data | mediumblob | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
this prevents corruption in the (extremely rare) case that a reply
to SUBSCRIBE or a NOTIFY is already processed while the method to
send the SUBSCRIBE is still being processed (with the little overhead
of a bit more lock contention)
AmEventProcessingThread processes events posted
in the event queue until either server shutdown
is signaled or processing is requested to stop
with the stop_processing function.
Override the onEvent(AmEvent* ev) method, create
an object, start() it and post events to it.
If you need queue policing (e.g. overflow protection),
override police_event() function.
based on a patch by Robert Szokovacs
Conflicts:
apps/dsm/DSMCoreModule.cpp
apps/dsm/DSMCoreModule.h
core/AmRtpStream.h
core/AmSession.h
doc/dsm/dsm_syntax.txt
pauseReceiving()
stop RTP receiving (drop all received packets, also no RTP timeout check)
resumeReceiving()
restart RTP receiving
monitorRTPTimeout(enabled=false)
set call to monitor RTP timeout (enabled="true" or "false")
--
-- This DSM app
-- o plays early media from a file in the DB
-- o sends a HTTP request to a web server
-- o SUBSCRIBEs to registration state
-- o if registration becomes active (at least one active contact), it sends back "300 Multiple Choices"
-- o otherwise (timeout) it sends back "480 Not found"
-- Parameters (P-App-Param):
-- audio_id - indicating audio file in DB
-- expiration - subscription expiration/waiting time (default: 60)
-- caller - caller passed to notification web app
-- callee - callee passed to notification web app
-- domain - domain passed to notification web app
--
-- Example: P-App-Param: audio_id=rbt;expiration=30;caller=+43111111111;callee=+432222222222;domain=sip.sipwise.com
--
-- Example DB:
-- CREATE TABLE `audio_files` (
-- `id` varchar(20) DEFAULT NULL,
-- `data` mediumblob
-- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
based on a patch by Emil Kroymann
Conflicts:
apps/dsm/DSMCall.cpp
apps/dsm/DSMCall.h
apps/dsm/DSMSession.h
apps/dsm/DSMStateEngine.h
apps/dsm/SystemDSM.cpp
apps/dsm/SystemDSM.h
doc/dsm/dsm_syntax.txt
Conflicts:
doc/dsm/dsm_syntax.txt
new sems.conf option:
Ignore too low CSeq for NOTIFYs? [yes | no]
May be necessary to interwork with simplistic/old (following 3265
instead of 5057) SIP event notification implementations.
ignore_notify_lower_cseq=yes
Conflicts:
core/AmSipDialog.cpp