REST URL pattern
sipXivr listens for http requests by default on port 8085.
Requests are authenticated using DIGEST authentication and SSL protected
curl --digest -k --request GET|PUT|DELETE https://{user}:{password}@localhost:8085/mailbox/{mailbox}/{request}
To test the service with curl use:General URL structure: https://{user}:{password}@localhost:8085/mailbox/{mailbox}
Common prefix: {mailbox} is the mailbox to work with. The mailbox of a user is the user's main <username> as found in validusers.xml
MWI Services
Provides the ability to query the status of, and update the Message Waiting Indicators associated with a mailbox
/mwi PUT (no body) Updates the MWI for this mailbox (i.e. tells the status server
to update the MWI status of devices that subscribed to MWI for this
mailbox.
GET Returns the MWI status for this mailbox.
Returns the status in [http://www.ietf.org/rfc/rfc3842.txt RFC-3842] format with
Content-Type set to application/simple-message-summary
Example
To get the MWI status for User 200, do this: curl --digest -k --request GET https://200:123@localhost:8085/mailbox/200/mwi The response looks like: Messages-Waiting: no Voice-Message: 0/3 (0/0)
Messages Services
Provides the ability to query the status of, and mark a message as heard/unheard.
/messages GET returns all messages in mailbox
/message/{messageid} where {messageid} is the unique message ID for the message, an 8 digit number.
/heard PUT (no body) Marks the message heard (and updates MWI)
GET returns message heard status.
The body returned is the XML fragment
<heard>true|false</heard>
DELETE Marks the message unheard (and updates MWI)
/delete
PUT (no body) Moves the message to Trash folder
Example
To mark User 200's message 00000080 as heard, do this: curl --digest -k --request PUT https://200:123@localhost:8085/mailbox/200/message/00000080/heard To delete a message curl --digest -k --request PUT https://200:123@localhost:8085/mailbox/200/message/00000018/delete Get all messages curl --digest -k --request GET https://200:123@localhost:8085/mailbox/200/messages returns <message id=00000018 heard=true urgent=false folder=deleted duration=0 received=1171062204000/>
Preferences Services (not implemented yet)
Provides the ability to query and set the value of the User's Active Voicemail Greeting type.
/preferences/
/activegreeting PUT sets the active greeting
body is the XML fragment <activegreeting>{value}\</activegreeting>
where {value} is one of none, standard, out of office, extended absence
GET returns the active greeting (returns above fragment)
DELETE sets the active greeting to "none"
Example
To query User 200's active greeting preference, do this: curl --digest -k --request GET https://200:123@localhost:8085/mailbox/200/preferences/activegreeting The response looks like: standard
Conference Services
Provides the ability to send conference commands to freeswitch
usage: curl --digest -k -X PUT https://200:123@<host_name>:8085/conference/item1/item2/item3 means the command: conference item1 item2 item3
Example
curl --digest -k -X PUT https://200:123@localhost:8085/conference/mirceaConf/lock means: conference mirceaConf lock returns: <command-response>OK mirceaConf locked </command-response>
Basically, freeswitch exposes the following set of commands:
<confname> list [delim <string>] <confname> xml_list <confname> energy <member_id|all|last> [<newval>] <confname> volume_in <member_id|all|last> [<newval>] <confname> volume_out <member_id|all|last> [<newval>] <confname> play <file_path> [async|<member_id>] <confname> say <text> <confname> saymember <member_id> <text> <confname> stop <[current|all|async|last]> [<member_id>] <confname> dtmf <[member_id|all|last]> <digits> <confname> kick <[member_id|all|last]> <confname> mute <[member_id|all]|last> <confname> unmute <[member_id|all]|last> <confname> deaf <[member_id|all]|last> <confname> undeaf <[member_id|all]|last> <confname> relate <member_id> <other_member_id> [nospeak|nohear|clear] <confname> lock <confname> unlock <confname> dial <endpoint_module_name>/<destination> <callerid number> <callerid name> <confname> bgdial <endpoint_module_name>/<destination> <callerid number> <callerid name> <confname> transfer <conference_name> <member id> [...<member id>] <confname> record <filename> <confname> norecord <[filename|all]> <confname> pin <pin#> <confname> nopin