Files
asterisk/rest-api/api-docs/playbacks.json
Andre Barbosa a47308ccb2 res_stasis_playback: Send PlaybackFinish event only once for errors
When we try to play a list of sound files in the same Play command,
we get only one PlaybackFinish event, after all sounds are played.

But in the case where the Play fails (because channel is destroyed
for example), Asterisk will send one PlaybackFinish event for each
sound file still to be played. If the list is big, Asterisk is
sending many events.

This patch adds a failed state so we can understand that the play
failed. On that case we don't send the event, if we still have a
list of sounds to be played.

When we reach the last sound, we send the PlaybackFinish with
the failed state.

ASTERISK-29464 #close

Change-Id: I4c2e5921cc597702513af0d7c6c2c982e1798322
2021-06-24 10:43:19 -05:00

166 lines
3.8 KiB
JSON

{
"_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
"_author": "David M. Lee, II <dlee@digium.com>",
"_svn_revision": "$Revision$",
"apiVersion": "2.0.0",
"swaggerVersion": "1.1",
"basePath": "http://localhost:8088/ari",
"resourcePath": "/api-docs/playbacks.{format}",
"requiresModules": [
"res_stasis_playback"
],
"apis": [
{
"path": "/playbacks/{playbackId}",
"description": "Control object for a playback operation.",
"operations": [
{
"httpMethod": "GET",
"summary": "Get a playback's details.",
"nickname": "get",
"responseClass": "Playback",
"parameters": [
{
"name": "playbackId",
"description": "Playback's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "The playback cannot be found"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Stop a playback.",
"nickname": "stop",
"responseClass": "void",
"parameters": [
{
"name": "playbackId",
"description": "Playback's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "The playback cannot be found"
}
]
}
]
},
{
"path": "/playbacks/{playbackId}/control",
"description": "Control object for a playback operation.",
"operations": [
{
"httpMethod": "POST",
"summary": "Control a playback.",
"nickname": "control",
"responseClass": "void",
"parameters": [
{
"name": "playbackId",
"description": "Playback's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "operation",
"description": "Operation to perform on the playback.",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string",
"allowableValues": {
"valueType": "LIST",
"values": [
"restart",
"pause",
"unpause",
"reverse",
"forward"
]
}
}
],
"errorResponses": [
{
"code": 400,
"reason": "The provided operation parameter was invalid"
},
{
"code": 404,
"reason": "The playback cannot be found"
},
{
"code": 409,
"reason": "The operation cannot be performed in the playback's current state"
}
]
}
]
}
],
"models": {
"Playback": {
"id": "Playback",
"description": "Object representing the playback of media to a channel",
"properties": {
"id": {
"type": "string",
"description": "ID for this playback operation",
"required": true
},
"media_uri": {
"type": "string",
"description": "The URI for the media currently being played back.",
"required": true
},
"next_media_uri": {
"type": "string",
"description": "If a list of URIs is being played, the next media URI to be played back.",
"required": false
},
"target_uri": {
"type": "string",
"description": "URI for the channel or bridge to play the media on",
"required": true
},
"language": {
"type": "string",
"description": "For media types that support multiple languages, the language requested for playback."
},
"state": {
"type": "string",
"description": "Current state of the playback operation.",
"required": true,
"allowableValues": {
"valueType": "LIST",
"values": [
"queued",
"playing",
"continuing",
"done",
"failed"
]
}
}
}
}
}
}