Call Recording

Download OpenAPI specification:Download

call-recording_0

SIPRec API

This API provides functionality to get events related to SIPRec sessions and fetch and delete recording files.

SIPRec service API Endpoints

Base url: https://api.prod-eu-north-1.iotcomms.io/callrecording

/{domain}/stoprecording

POST

Stops the ongoing recording and saves the already recorded data.

Authorizations:
jwtAuthorizer
path Parameters
domain
required
string
Request Body schema: application/json
required
method
string

Describing the method called, in this case "STOPRECORDING". example: "STOPRECORDING"

replyId
string

An identifier for the specific call that needs to be copied from /recordingStarted. example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6IjgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3MyIsImNvbW1hbmRRdWV1ZSI6Imh0dHBzOi8vc3FzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tLzI5MjQzNTMwMDc3OS9hd3Njb2Rlc3Rhci1pb3Rjb21tcy1sYW1iZGEtdGVzdC1zbnNSZXNwb25zZVF1ZXVlLTFNNFJOQlJDUVFYMFUiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJhbGFybVRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJ0ZW1wQnVja2V0IjoicmVjb3JkaW5ncy5zaXAudGVzdC1ldS13ZXN0LTEuaW90Y29tbXMuaW8iLCJ0ZW1wS2V5IjoiMjMwMzMxLTgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3My5tcDMiLCJpYXQiOjE2ODAyNTA2Nzd9.IcNtVkQ8RvTzKY1ZdpkvoCAcM9TzUA8i5-gsXa4cssk"

recordingId
string

An identifyer of the recording that needs to be included in all requests. example: "83c7a360-cf9c-11ed-8779-876722fa3073"

Responses

Request samples

Content type
application/json
{
  • "method": "string",
  • "replyId": "string",
  • "recordingId": "string"
}

Response samples

Content type
application/json
{
  • "success": true
}

/{domain}/stoprecording

OPTIONS
path Parameters
domain
required
string

Responses

Response samples

Content type
application/json
{ }

/{domain}/storerecording

POST

Stores the specified recording at the specified location. Will generate a /recordingStored implicit callback when ready. This command may contain information on croping and masking the recording.

Authorizations:
jwtAuthorizer
path Parameters
domain
required
string
Request Body schema: application/json
required
destinationBucket
string

The bucket where a recording should be permanently stored. example: "recordings.sip.test-eu-west-1.iotcomms.io"

fileName
string

Optional property to set the name for the stored recording. If no value the recording will be stored with the name <date>-<recordingId>.mp3. example: "myRecording.mp3"

method
string

Describing the method called, in this case "STORERECORDING". example: "STORERECORDING"

replyId
string

An identifier for the specific call that needs to be copied from /recordingReady. example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6IjgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3MyIsImNvbW1hbmRRdWV1ZSI6Imh0dHBzOi8vc3FzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tLzI5MjQzNTMwMDc3OS9hd3Njb2Rlc3Rhci1pb3Rjb21tcy1sYW1iZGEtdGVzdC1zbnNSZXNwb25zZVF1ZXVlLTFNNFJOQlJDUVFYMFUiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJhbGFybVRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJ0ZW1wQnVja2V0IjoicmVjb3JkaW5ncy5zaXAudGVzdC1ldS13ZXN0LTEuaW90Y29tbXMuaW8iLCJ0ZW1wS2V5IjoiMjMwMzMxLTgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3My5tcDMiLCJpYXQiOjE2ODAyNTA2Nzd9.IcNtVkQ8RvTzKY1ZdpkvoCAcM9TzUA8i5-gsXa4cssk"

encryptionKey
string

Optional property to set an arbitrary encryption key for the stored file.

recordingId
string

An identifyer of the recording that needs to be included in all requests. example: "83c7a360-cf9c-11ed-8779-876722fa3073"

modificationParams
object

Optional object property to modify the recorded file before storage. Valid parameters are {absoluteTimes: bool, trim: {from: timestamp, to: timestamp}, mask: {from: timestamp, to: timestamp}} If absoluteTime is used, the timestamp is expressed in Unix Timestamp, otherwise in ms. example: "{"absoluteTimes":true,"trim":{"from":1680179455424,"to":1680179460221}}"

Responses

Request samples

Content type
application/json
{
  • "destinationBucket": "string",
  • "fileName": "string",
  • "method": "string",
  • "replyId": "string",
  • "encryptionKey": "string",
  • "recordingId": "string",
  • "modificationParams": { }
}

Response samples

Content type
application/json
{
  • "success": true
}

/{domain}/storerecording

OPTIONS
path Parameters
domain
required
string

Responses

Response samples

Content type
application/json
{ }

/{domain}/deleterecording

POST

Deletes the specifiec recording from the temporary storage. Should be performed after storerecording if recording is intended to be saved. Will result in a /recordingDeleted implicit callback.

Authorizations:
jwtAuthorizer
path Parameters
domain
required
string
Request Body schema: application/json
required
replyId
string

Set this to the value of replyId receviced in the getIvrCommand request that started the command to be interrupted. example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6IjgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3MyIsImNvbW1hbmRRdWV1ZSI6Imh0dHBzOi8vc3FzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tLzI5MjQzNTMwMDc3OS9hd3Njb2Rlc3Rhci1pb3Rjb21tcy1sYW1iZGEtdGVzdC1zbnNSZXNwb25zZVF1ZXVlLTFNNFJOQlJDUVFYMFUiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJhbGFybVRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJ0ZW1wQnVja2V0IjoicmVjb3JkaW5ncy5zaXAudGVzdC1ldS13ZXN0LTEuaW90Y29tbXMuaW8iLCJ0ZW1wS2V5IjoiMjMwMzMxLTgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3My5tcDMiLCJpYXQiOjE2ODAyNTA2Nzd9.IcNtVkQ8RvTzKY1ZdpkvoCAcM9TzUA8i5-gsXa4cssk"

recordingId
string

An identifyer of the recording that needs to be included in all requests. example: "83c7a360-cf9c-11ed-8779-876722fa3073"

Responses

Request samples

Content type
application/json
{
  • "replyId": "string",
  • "recordingId": "string"
}

Response samples

Content type
application/json
{
  • "success": true
}

/{domain}/deleterecording

OPTIONS
path Parameters
domain
required
string

Responses

Response samples

Content type
application/json
{ }

/{domain}/cancelrecording

POST

Cancels the ongoing recording not resulting in any saved recording.

Authorizations:
jwtAuthorizer
path Parameters
domain
required
string
Request Body schema: application/json
required
method
string

Describing the method called, in this case "CANCELRECORDING". example: "CANCELRECORDING"

replyId
string

An identifier for the specific call that needs to be copied from /recordingStarted. example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6IjgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3MyIsImNvbW1hbmRRdWV1ZSI6Imh0dHBzOi8vc3FzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tLzI5MjQzNTMwMDc3OS9hd3Njb2Rlc3Rhci1pb3Rjb21tcy1sYW1iZGEtdGVzdC1zbnNSZXNwb25zZVF1ZXVlLTFNNFJOQlJDUVFYMFUiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJhbGFybVRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJ0ZW1wQnVja2V0IjoicmVjb3JkaW5ncy5zaXAudGVzdC1ldS13ZXN0LTEuaW90Y29tbXMuaW8iLCJ0ZW1wS2V5IjoiMjMwMzMxLTgzYzdhMzYwLWNmOWMtMTFlZC04Nzc5LTg3NjcyMmZhMzA3My5tcDMiLCJpYXQiOjE2ODAyNTA2Nzd9.IcNtVkQ8RvTzKY1ZdpkvoCAcM9TzUA8i5-gsXa4cssk"

recordingId
string

An identifyer of the recording that needs to be included in all requests. example: "83c7a360-cf9c-11ed-8779-876722fa3073"

Responses

Request samples

Content type
application/json
{
  • "method": "string",
  • "replyId": "string",
  • "recordingId": "string"
}

Response samples

Content type
application/json
{
  • "success": true
}

/{domain}/cancelrecording

OPTIONS
path Parameters
domain
required
string

Responses

Response samples

Content type
application/json
{ }

SIPRec service API Callbacks

/newCall

POST
Request Body schema: application/json

A request https POST request is sent to the /newCall API resource of the remote system to query if the call should be recorded or not. Call setup is paused until a response have been received or after a timeout of the API call.

recordingId
string

The recordingId generated by the system to uniquely identify the recorded call.

metaData
string

The SIPRec metadata XML document from body of the call generating the SIPRec request.

sipRecCallId
string

The content of the SIP call-id header for the SIPRec request.

Responses

Request samples

Content type
application/json
{
  • "recordingId": "015b5b80-c275-11ed-a32c-fddf7fd4273c",
  • "metaData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<recording xmlns=\"urn:ietf:params:xml:ns:recording:1\">\r\n <datamode>complete</datamode>\r\n <session session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <start-time>2015-05-19T09:42:06.911Z</start-time>\r\n </session>\r\n <participant participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\">\r\n <nameID aor=\"sip:808808@9.0.0.174\">\r\n <name xml:lang=\"en\">808808</name>\r\n </nameID>\r\n </participant>\r\n <participantsessionassoc participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <associate-time>2015-05-19T09:42:06.911Z</associate-time>\r\n </participantsessionassoc>\r\n <stream stream_id=\"JaPQeP1CEeSA8KsYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <label>1</label>\r\n </stream>\r\n <participant participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\">\r\n <nameID aor=\"sip:909909@9.0.0.174\">\r\n <name xml:lang=\"en\">909909</name>\r\n </nameID>\r\n </participant>\r\n <participantsessionassoc participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <associate-time>2015-05-19T09:42:06.911Z</associate-time>\r\n </participantsessionassoc>\r\n <stream stream_id=\"JaPQeP1CEeSA86sYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <label>2</label>\r\n </stream>\r\n <participantstreamassoc participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\">\r\n <send>foo1</send>\r\n <recv>foo2</recv>\r\n <send>foo3</send>\r\n <recv>foo4</recv>\r\n </participantstreamassoc>\r\n <participantstreamassoc participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\">\r\n <send>foo1</send>\r\n <recv>foo2</recv>\r\n <send>foo3</send>\r\n <recv>foo4</recv>\r\n </participantstreamassoc>\r\n </recording>\r\n",
  • "sipRecCallId": 7260041678961334000
}

Response samples

Content type
application/json
{
  • "recordCall": true
}

/recordingFailed

POST
Request Body schema: application/json

Notifications sent by the SIPREC server to indicate a recording has failed. This describes the REST-based interface.

event
string

Describes the event type

recordingId
string

The recordingId identifies the recording

domain
string

The domain for witch the recording is being done

replyId
string

An identifier of the implicit callback that needs to be included in any upcomming request within the recording session

commandQueue
string

An pointer to the queue where messages are being published

commandRegion
string

The region where the queue is situated

Responses

Request samples

Content type
application/json
{
  • "event": "RECORDINGFAILED",
  • "recordingId": "015b5b80-c275-11ed-a32c-fddf7fd4273c",
  • "domain": "sip.prod-eu-north-1.iotcomms.io",
  • "replyId": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6ImY3MzFkODYwLWMyNzMtMTFlZC1hMzJjLWZkZGY3ZmQ0MjczYyIsImNvbnRyb2xJcCI6IjEwLjg1LjE2Ni41NCIsInJlY29yZGluZ1NlcnZlciI6IjEwLjg1LjE2Ni41NCIsInNlcnZpY2VEaXNjb3ZlcnlUYWJsZSI6ImF3c2NvZGVzdGFyLWlvdGNvbW1zLWxhbWJkYS10ZXN0LXNlcnZpY2VEYXRhLTFWU0xZWkFCOVM3WEkiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJjb21tYW5kUXVldWUiOiJodHRwczovL3Nxcy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS8yOTI0MzUzMDA3NzkvYXdzY29kZXN0YXItaW90Y29tbXMtbGFtYmRhLXRlc3Qtc25zUmVzcG9uc2VRdWV1ZS0xTTRSTkJSQ1FRWDBVIiwiaWF0IjoxNjc4ODAzODg0fQ.fgrK1GUJpHbH0qbU_4MOgsBgFH6i-aBX2U7K-muoQUw",
  • "commandRegion": "eu-west-1"
}

/recordingStarted

POST
Request Body schema: application/json

Notifications sent by the SIPREC server to indicate a recording has started. This describes the REST-based interface.

event
string

Describes the event type

recordingId
string

The recordingId identifies the recording

domain
string

The domain for witch the recording is being done

metaData
string

The metaData included in the original INVITE

replyId
string

An identifier of the implicit callback that needs to be included in any upcomming request within the recording session

commandQueue
string

An pointer to the queue where messages are being published

commandRegion
string

The region where the queue is situated

Responses

Request samples

Content type
application/json
{
  • "event": "RECORDINGSTARTED",
  • "recordingId": "015b5b80-c275-11ed-a32c-fddf7fd4273c",
  • "domain": "sip.prod-eu-north-1.iotcomms.io",
  • "metaData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<recording xmlns=\"urn:ietf:params:xml:ns:recording:1\">\r\n <datamode>complete</datamode>\r\n <session session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <start-time>2015-05-19T09:42:06.911Z</start-time>\r\n </session>\r\n <participant participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\">\r\n <nameID aor=\"sip:808808@9.0.0.174\">\r\n <name xml:lang=\"en\">808808</name>\r\n </nameID>\r\n </participant>\r\n <participantsessionassoc participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <associate-time>2015-05-19T09:42:06.911Z</associate-time>\r\n </participantsessionassoc>\r\n <stream stream_id=\"JaPQeP1CEeSA8KsYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <label>1</label>\r\n </stream>\r\n <participant participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\">\r\n <nameID aor=\"sip:909909@9.0.0.174\">\r\n <name xml:lang=\"en\">909909</name>\r\n </nameID>\r\n </participant>\r\n <participantsessionassoc participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <associate-time>2015-05-19T09:42:06.911Z</associate-time>\r\n </participantsessionassoc>\r\n <stream stream_id=\"JaPQeP1CEeSA86sYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <label>2</label>\r\n </stream>\r\n <participantstreamassoc participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\">\r\n <send>foo1</send>\r\n <recv>foo2</recv>\r\n <send>foo3</send>\r\n <recv>foo4</recv>\r\n </participantstreamassoc>\r\n <participantstreamassoc participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\">\r\n <send>foo1</send>\r\n <recv>foo2</recv>\r\n <send>foo3</send>\r\n <recv>foo4</recv>\r\n </participantstreamassoc>\r\n </recording>\r\n",
  • "replyId": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6ImY3MzFkODYwLWMyNzMtMTFlZC1hMzJjLWZkZGY3ZmQ0MjczYyIsImNvbnRyb2xJcCI6IjEwLjg1LjE2Ni41NCIsInJlY29yZGluZ1NlcnZlciI6IjEwLjg1LjE2Ni41NCIsInNlcnZpY2VEaXNjb3ZlcnlUYWJsZSI6ImF3c2NvZGVzdGFyLWlvdGNvbW1zLWxhbWJkYS10ZXN0LXNlcnZpY2VEYXRhLTFWU0xZWkFCOVM3WEkiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJjb21tYW5kUXVldWUiOiJodHRwczovL3Nxcy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS8yOTI0MzUzMDA3NzkvYXdzY29kZXN0YXItaW90Y29tbXMtbGFtYmRhLXRlc3Qtc25zUmVzcG9uc2VRdWV1ZS0xTTRSTkJSQ1FRWDBVIiwiaWF0IjoxNjc4ODAzODg0fQ.fgrK1GUJpHbH0qbU_4MOgsBgFH6i-aBX2U7K-muoQUw",
  • "commandRegion": "eu-west-1"
}

/recordingCancelled

POST
Request Body schema: application/json

Notifications sent by the SIPREC server to indicate a recording has been cancelled. This describes the REST-based interface.

event
string

Describes the event type

recordingId
string

The recordingId identifies the recording

domain
string

The domain for witch the recording is being done

metaData
string

The metaData included in the original INVITE

replyId
string

An identifier of the implicit callback that needs to be included in any upcomming request within the recording session

commandQueue
string

An pointer to the queue where messages are being published

commandRegion
string

The region where the queue is situated

Responses

Request samples

Content type
application/json
{
  • "event": "RECORDINGCANCELLED",
  • "recordingId": "015b5b80-c275-11ed-a32c-fddf7fd4273c",
  • "domain": "sip.prod-eu-north-1.iotcomms.io",
  • "metaData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<recording xmlns=\"urn:ietf:params:xml:ns:recording:1\">\r\n <datamode>complete</datamode>\r\n <session session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <start-time>2015-05-19T09:42:06.911Z</start-time>\r\n </session>\r\n <participant participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\">\r\n <nameID aor=\"sip:808808@9.0.0.174\">\r\n <name xml:lang=\"en\">808808</name>\r\n </nameID>\r\n </participant>\r\n <participantsessionassoc participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <associate-time>2015-05-19T09:42:06.911Z</associate-time>\r\n </participantsessionassoc>\r\n <stream stream_id=\"JaPQeP1CEeSA8KsYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <label>1</label>\r\n </stream>\r\n <participant participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\">\r\n <nameID aor=\"sip:909909@9.0.0.174\">\r\n <name xml:lang=\"en\">909909</name>\r\n </nameID>\r\n </participant>\r\n <participantsessionassoc participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <associate-time>2015-05-19T09:42:06.911Z</associate-time>\r\n </participantsessionassoc>\r\n <stream stream_id=\"JaPQeP1CEeSA86sYHx7YVg==\" session_id=\"JaPQeP1CEeSA66sYHx7YVg==\">\r\n <label>2</label>\r\n </stream>\r\n <participantstreamassoc participant_id=\"JaPQeP1CEeSA76sYHx7YVg==\">\r\n <send>foo1</send>\r\n <recv>foo2</recv>\r\n <send>foo3</send>\r\n <recv>foo4</recv>\r\n </participantstreamassoc>\r\n <participantstreamassoc participant_id=\"JaPQeP1CEeSA8qsYHx7YVg==\">\r\n <send>foo1</send>\r\n <recv>foo2</recv>\r\n <send>foo3</send>\r\n <recv>foo4</recv>\r\n </participantstreamassoc>\r\n </recording>\r\n",
  • "replyId": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6ImY3MzFkODYwLWMyNzMtMTFlZC1hMzJjLWZkZGY3ZmQ0MjczYyIsImNvbnRyb2xJcCI6IjEwLjg1LjE2Ni41NCIsInJlY29yZGluZ1NlcnZlciI6IjEwLjg1LjE2Ni41NCIsInNlcnZpY2VEaXNjb3ZlcnlUYWJsZSI6ImF3c2NvZGVzdGFyLWlvdGNvbW1zLWxhbWJkYS10ZXN0LXNlcnZpY2VEYXRhLTFWU0xZWkFCOVM3WEkiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJjb21tYW5kUXVldWUiOiJodHRwczovL3Nxcy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS8yOTI0MzUzMDA3NzkvYXdzY29kZXN0YXItaW90Y29tbXMtbGFtYmRhLXRlc3Qtc25zUmVzcG9uc2VRdWV1ZS0xTTRSTkJSQ1FRWDBVIiwiaWF0IjoxNjc4ODAzODg0fQ.fgrK1GUJpHbH0qbU_4MOgsBgFH6i-aBX2U7K-muoQUw",
  • "commandRegion": "eu-west-1"
}

SIPRec service API Service Alarms

/recordingReady

POST
Request Body schema: application/json

A request https POST request is sent to the /recordingReady API resource of the remote system to inform of the recording being ready and stored in the temporary storage.

recordingId
string

The recordingId generated by the system to uniquely identify the recorded call.

meta
string

The recordings metadata describing the containing streams. Sent in the format {recordingsPartsInfo: {callerStreams:[{start: timestamp, ssrc: ssrcRef}], calleeStreams: [{start: timestamp, ssrc, ssrcRef}]}}

sipRecCallId
string

The content of the SIP call-id header for the SIPRec request.

commandQueue
string

URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.

domain
string

The domain for witch the recording is being done

replyId
string

An identifier of the implicit callback that needs to be included in any upcomming request within the recording session

Responses

Request samples

Content type
application/json
{
  • "recordingId": "015b5b80-c275-11ed-a32c-fddf7fd4273c",
  • "meta": "{\nrecordingsPartsInfo: {\ncallerStreams: [\n{\nstart: 1680093356094,\nssrc: 2773030717\n}\n],\ncalleeStreams: [\n{\nstart: 1680093356094,\nssrc: 3758356851\n}\n]\n}\n}",
  • "sipRecCallId": 7260041678961334000,
  • "domain": "sip.prod-eu-north-1.iotcomms.io",
  • "replyId": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb21haW4iOiJzeXN0ZW10ZXN0LnRlc3QuaW90Y29tbXMuaW8iLCJyZWNvcmRpbmdJZCI6ImY3MzFkODYwLWMyNzMtMTFlZC1hMzJjLWZkZGY3ZmQ0MjczYyIsImNvbnRyb2xJcCI6IjEwLjg1LjE2Ni41NCIsInJlY29yZGluZ1NlcnZlciI6IjEwLjg1LjE2Ni41NCIsInNlcnZpY2VEaXNjb3ZlcnlUYWJsZSI6ImF3c2NvZGVzdGFyLWlvdGNvbW1zLWxhbWJkYS10ZXN0LXNlcnZpY2VEYXRhLTFWU0xZWkFCOVM3WEkiLCJldmVudFRvcGljIjoiYXJuOmF3czpzbnM6ZXUtd2VzdC0xOjI5MjQzNTMwMDc3OTpmdW5jdGlvbnRlc3QtdGVzdC1mdW5jdGlvbnRlc3R0ZXN0dG9waWM4NzkzNjUxOS1QVHRhdWVhV0hRMGIiLCJjb21tYW5kUXVldWUiOiJodHRwczovL3Nxcy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS8yOTI0MzUzMDA3NzkvYXdzY29kZXN0YXItaW90Y29tbXMtbGFtYmRhLXRlc3Qtc25zUmVzcG9uc2VRdWV1ZS0xTTRSTkJSQ1FRWDBVIiwiaWF0IjoxNjc4ODAzODg0fQ.fgrK1GUJpHbH0qbU_4MOgsBgFH6i-aBX2U7K-muoQUw"
}

Response samples

Content type
application/json
{ }

call-recording_2

SIP Events Topic

RECORDINGSTARTED

This event is sent when a SIPRec recording has started.

Parameters

Name Description
calledParty: string The user part of the incoming SIPRec invite received (the part before @ sign). This property can be used to understand which end customer a recording belongs to when building a multi tenant service
commandQueue: string URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
domain: string The domain of the tenant owning the recorded calls.
metaData: string The SIPRec metadata part from the SIPRec invite request that triggered the recording.
recordingId: string The recordingId of the started recording.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS routing response command is generated

Example

{
    "event": "RECORDINGSTARTED",
    "calledParty": "user123",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "metaData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><recording xmlns=\"urn:ietf:params:xml:ns:recording:1\">...",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

RECORDINGCANCELLED

This event is sent when the CANCELRECORDING command is completed or if the system decided to cancel the recording.

Parameters

Name Description
calledParty: string The user part of the incoming SIPRec invite received (the part before @ sign). This property can be used to understand which end customer a recording belongs to when building a multi tenant service
commandQueue: string URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
domain: string The domain of the tenant owning the recorded calls.
reason: string The reason that the event is sent. It is set to 'cancelCommand' if the recording was cancelled using CANCELRECORDING command. It is set to 'duplicate' in case recording was canceled due to recording cancelled since another node has already started the recording.
recordingId: string The recordingId of the cancelled recording.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS routing response command is generated.

Example

{
    "event": "RECORDINGCANCELLED",
    "calledParty": "user123",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "reason": "cancelCommand",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

RECORDINGREADY

This event is sent when a SIPRec recording is completed and a file is ready to be copied to the final storage destination.

Parameters

Name Description
calledParty: string The user part of the incoming SIPRec invite received (the part before @ sign). This property can be used to understand which end customer a recording belongs to when building a multi tenant service
commandQueue: string URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
conferenceSegments: array (Optional) An array of conferenceSegment objects. If detection of related recordings is enabled and the system identifies a conference call is active during the recording session, this array will be populated with information about which portion(s) of the session recorded the conference call. Each conferenceSegment object contains the following properties: startTime (when the conference started), endTime (when the conference ended), aor (the SIP user part for the conference participant), and state (can be "active" or "stopped"). The value of this property may be copied to the MERGERECORDINGS command if you need to remove duplicated audio caused by mixing streams containing the same participants.
domain: string The domain of the tenant owning the recorded calls.
meta: string Meta information for the generated recording file. The recordingsPartsInfo object provides timestamps of when RTP streams have started for the caller and callee and the corresponding SSRC IDs in the callerStreams and calleeStreams arrays. If a recording consists of multiple RTP streams, the array will contain multiple objects.
recordingId: string The recordingId of the completed recording.
relatedRecordings: array (Optional) An array of related recordings with their recordingId, startTime, state, and recordingRole. If all the related recordings are in state "stopped", it means that it is possible to invoke the MERGERECORDINGS command. It can't be done if a related recording is still "active". The recordingRole of type "parent" is assigned to the first recording of all the related recordings. If another recording is started later in the relation, it gets role "child". If two recordings are started one after another, they will get role "sibling". It is possible that a child recording terminates later than the parent recording.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS routing response command is generated
warning: string The existence of this attribute indicates that a recording file was produced but the recording was not terminated properly with a SIP BYE request. Therefore, only parts of the conversation may have been recorded, or a period of silence at the end until the timeout was triggered.

Example

{
    "event": "RECORDINGREADY",
    "calledParty": "user123",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "meta": "\"recordingsPartsInfo\": { \"callerStreams\": [{\"start\": 1557932777534, \"ssrc\": 2408484501}], \"calleeStreams\": [{\"start\": 1557932777523, \"ssrc\": 197496009}] }",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "conferenceSegments": [
        {
            "startTime": 1728890680444,
            "endTime": 1728890687255
        }
    ]
    "relatedRecordings": [
        {
            "recordingId": "cbefcbd0-8b1c-11ef-982b-1b7455556a32",
            "startTime": 1729014126886,
            "state": "stopped",
            "recordingRole": "sibling",
            "conferenceSegments": [
                {
                    "startTime": 1728890680444,
                    "endTime": 1728890687255
                }
            ]
        },
        {
            "recordingId": "c9fa3d60-8b1c-11ef-982b-1b7455556a32",
            "startTime": 1729014123722,
            "state": "stopped",
            "recordingRole": "parent",
            "conferenceSegments": [
                {
                    "startTime": 1728890680444,
                    "endTime": 1728890687255
                }
            ]
        }
    ],
    "replyId": "fdkmlksfm38f8nfQekefmffmf...",
    "warning": "rtpTimeout"
}

RECORDINGFAILED

This event is sent in case a recording that is started fails to produce a recording file.

Parameters

Name Description
calledParty: string The user part of the incoming SIPRec invite received (the part before @ sign). This property can be used to understand which end customer a recording belongs to when building a multi tenant service
commandQueue: string URL pointing to the SQS queue where subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
domain: string The domain of the tenant owning the recorded calls.
reason: string String with error description of the reason of failure
recordingId: string The recordingId of the recording that failed.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS response command is generated

Example

{
    "event": "RECORDINGFAILED",
    "calledParty": "user123",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "reason": "Detailed error message explaining the failure",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

RECORDINGSTORED

This event is sent when the recording file is successfully copied to the final storage destination.

Parameters

Name Description
commandQueue: string URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
destinationBucket: string Destination bucket for the stored recording.
fileName: string Filename for the stored recording.
recordingId: string The recordingId of the started recording.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS routing response command is generated

Example

{
    "event": "RECORDINGSTORED",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "destinationBucket": "recordingbucket.company.com",
    "fileName": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e.mp3",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

STORERECORDINGFAILED

This event is sent when the STORERECORDING command fails.

Parameters

Name Description
commandQueue: string URL pointing to the SQS queue where subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
domain: string The domain of the tenant owning the recorded calls.
reason: string Description of the error that caused the STORERECORDING command to fail.
recordingId: string The recordingId of the recording for which the store operation failed.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS response command is generated

Example

{
    "event": "STORERECORDINGFAILED",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "reason": "Detailed error message explaining the failure",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

RECORDINGSMERGED

This event is sent when the recording files have been successfully merged and the merged recording file is stored to the final storage destination.

Parameters

Name Description
commandQueue: string URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
destinationBucket: string Destination bucket for the stored merged recording.
domain: string The domain of the tenant owning the recorded calls.
fileName: string Filename for the stored merged recording.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS routing response command is generated

Example

{
    "event": "RECORDINGSMERGED",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "destinationBucket": "recordingbucket.company.com",
    "domain": "sip.example.com",
    "fileName": "mergedrecording.mp3",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

MERGERECORDINGSFAILED

This event is sent when the MERGERECORDINGS command fails.

Parameters

Name Description
commandQueue: string URL pointing to the SQS queue where subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
domain: string The domain of the tenant owning the recorded calls.
reason: string Description of the error that caused the MERGERECORDINGS command to fail.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS response command is generated

Example

{
    "event": "MERGERECORDINGSFAILED",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "reason": "Detailed error message explaining the failure",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

RECORDINGDELETED

This event is sent when the recording file is successfully deleted from the temporary storage location.

Parameters

Name Description
commandQueue: string URL pointing to the SQS queue where the subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
recordingId: string The recordingId of the started recording.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS routing response command is generated

Example

{
    "event": "RECORDINGDELETED",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

DELETERECORDINGFAILED

This event is sent when the DELETERECORDING command fails.

Parameters

Name Description
commandQueue: string URL pointing to the SQS queue where subsequent commands to interact with the recording should be sent.
commandRegion: string The AWS region the commandQueue is hosted in.
domain: string The domain of the tenant owning the recorded calls.
reason: string Description of the error that caused the DELETERECORDING command to fail.
recordingId: string The recordingId of the recording for which the delete operation failed.
replyId: string This string is used by the service to correlate SQS response commands with SNS notifications. It must be copied when an SQS response command is generated

Example

{
    "event": "DELETERECORDINGFAILED",
    "commandQueue": "https://sqs.eu-west-1.amazonaws.com/292435300779/...",
    "commandRegion": "eu-west-1",
    "domain": "sip.example.com",
    "reason": "Detailed error message explaining the failure",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

Response Command Queue

Queue ARN: SQS URL provided in notification event parameter commandQueue

This is a queue that listens for response commands related to SNS events. The URL for the queue is passed in the commandQueue parameter of the event.

STOPRECORDING

This command is sent to the SQS response queue indicated in the RECORDINGSTARTED event to stop the ongoing recording. A recording file with the recorded content up until the command has been received will be generated and once this is complete a RECORDINGREADY event will be sent.

Parameters

Name Description
recordingId: string The recordingId of the recording to be stopped.
replyId: string This parameter must be set to the value received in the SNS RECORDINGSTARTED event to allow the service to associate the response command with initial event.

Example

{
    "method": "STOPRECORDING",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

CANCELRECORDING

This command is sent to the SQS response queue indicated in the RECORDINGSTARTED event to cancel the ongoing recording. Any produced temporary recording files will be permanently deleted. When the files have been deleted a RECORDINGCANCELLED event will be sent.

Parameters

Name Description
recordingId: string The recordingId of the recording to be cancelled.
replyId: string This parameter must be set to the value received in the SNS RECORDINGSTARTED event to allow the service to associate the response command with initial event.

Example

{
    "method": "CANCELRECORDING",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

MERGERECORDINGS

This command is sent to the SQS response queue indicated in the RECORDINGREADY event to merge multiple recordings into a single audio file and store it in permanent storage.

Parameters

Name Description
destinationBucket: string The name of the S3 bucket where the merged recording should be stored.
destinationRegion: string Optional region identifier if destinationBucket is in a different AWS region than where the recording service is running.
encryptionKey: string Optional ARN pointing to a key to be used for server-side encryption of the stored recording.
fileName: string Optional filename for the merged recording. If this parameter is missing, a default name will be used.
replyId: string This parameter must be set to the value received in the SNS RECORDINGREADY event to allow the service to associate the response command with the initial event.
toMerge: array An array of objects, each containing a recordingId and startTime of the recordings to be merged. This array is constructed from the recordingId and startTime from the RECORDINGREADY event and the values in the relatedRecordings property in the event. The array does not need to be sorted; the command will merge based on startTime, which is used to set the correct offset when merging the audio files into a single file. If duplicate conference audio should be removed, the conferenceSegments values should also be copied from the main recording and the related recording objects. If these are provided, only the audio from the audio file that started first will be used in the merged file during periods when a conference is active.

Example 1: MERGERECORDINGS

{
    "method": "MERGERECORDINGS",
    "destinationBucket": "recordingstorage.company.com",
    "destinationRegion": "us-west-2",
    "toMerge": [
        {
            "recordingId": "5e32bf50-89fd-11ef-966f-03e88116d7e5",
            "startTime": 1728890677283,
            "conferenceSegments": [
                {
                    "startTime": 1728890680444,
                    "endTime": 1728890687255
                }
            ]
        },
        {
            "recordingId": "601fe950-89fd-11ef-966f-03e88116d7e5",
            "startTime": 1728890680444,
            "conferenceSegments": [
                {
                    "startTime": 1728890680444,
                    "endTime": 1728890687255
                }
            ]

        },
        {
            "recordingId": "642ebad0-89fd-11ef-966f-03e88116d7e5",
            "startTime": 1728890687255,
            "conferenceSegments": [
                {
                    "startTime": 1728890680444,
                    "endTime": 1728890687255
                }
            ]
        }
    ],
    "fileName": "mergedrecording.mp3",
    "encryptionKey": "arn:aws:kms:region:account-id:key/key-id",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

STORERECORDING

This command is sent to the SQS response queue indicated in the RECORDINGREADY event to copy the recording from temporary to permanent storage.

Parameters

Name Description
destinationBucket: string The name of the S3 bucket that the file should be copied to.
destinationRegion: string Optional region identifier if destinationBucket is in a different AWS region than where the recording service is running.
encryptionKey: string Optional ARN pointing to a key to be used for server-side encryption of the stored recording.
fileName: string Optional filename for the permanently stored file. If this parameter is missing, .mp3 will be used as the file name.
modificationParams: object Optional object providing information on how to modify the recording before it is stored. The structure of modificationParams can be seen in Example 1 below.
recordingId: string The recordingId of the recording to be copied.
replyId: string This parameter must be set to the value received in the SNS RECORDINGREADY event to allow the service to associate the response command with the initial event.

Example 1: modificationParams

{
    "absoluteTimes": boolean,
    "mask": {
        "caller": [{"from": number, "to": number}],
        "callee": [{"from": number, "to": number}]
    },
    "trim": {"from": number, "to": number}
}

Where:

  • absoluteTimes indicates if the times are relative to the recording start in seconds or absolute timestamps in milliseconds since Jan 1st, 1970.

  • mask object is optional to specify if sections of the audio channel related to the caller or callee should be masked. An array with timestamps defining intervals to be masked is provided. The audio for these intervals will be replaced by a beep tone.

  • trim object is optional to specify a subset of the original recording as an interval to be saved.

Example 2: Full Command

{
    "method": "STORERECORDING",
    "destinationBucket": "recordingstorage.company.com",
    "destinationRegion": "us-west-2",
    "encryptionKey": "arnstring",
    "fileName": "myrecording.mp3",
    "modificationParams": {
        "absoluteTimes": true,
        "mask": {
            "caller": [
                {
                    "from": 1561988732565,
                    "to": 1561988733565
                },
                {
                    "from": 1561988735565,
                    "to": 1561988735965
                },
                {
                    "from": 1561988737565,
                    "to": 1561988738565
                }
            ],
            "callee": [
                {
                    "from": 1561988733565,
                    "to": 1561988734565
                }
            ]
        },
        "trim": {
            "from": 1561988732565,
            "to": 1561988738565
        }
    },
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

DELETERECORDING

This command is sent to the SQS response queue indicated in the RECORDINGREADY or RECORDINGSTORED event to copy the recording from temporary to permanent storage.

Parameters

Name Description
recordingId: string The recordingId of the recording to be copied.
replyId: string This parameter must be set to the value received in the SNS RECORDINGREADY or RECORDINGSTORED event to allow the service to associate the response command with the initial event.

Example

{
    "method": "DELETERECORDING",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "replyId": "fdkmlksfm38f8nfQekefmffmf..."
}

Alarm Topic

This SNS topic is used to listen for alarms generated by the SIPRec service.

storeRecordingError

This alarm is generated if the STORERECORDING command fails.

Parameters

Name Description
type: string The type of alarm.
event: string The original SQS event that triggered the failed command.
error: string Error description

Example

{
    "type": "storeRecordingError",
    "error": "recordingId does not match eventId"
}

deleteRecordingError

This alarm is generated if the DELETERECORDING command fails.

Parameters

Name Description
type: string The type of alarm.
event: string The original SQS event that triggered the failed command.
error: string Error description

Example

{
    "type": "deleteRecordingError",
    "error": "recordingId does not match eventId"
}

recordingFailed

This alarm is generated if a recording failed with an error.

Parameters

Name Description
type: string The recording failed due to reason described in error.
recordingId: string The recordingId of the failed recording.
domain: string The domain of the tenant.
error: string Error description

Example

{
    "event": "recordingFailed",
    "type": "recordingFailed",
    "recordingId": "aa2763a0-f00d-11e9-b265-41d830bfc3ea",
    "domain": "sip.example.com",
    "error": "Recording completed with error\": { \"reason\":\"Error No RTP media received\", \"type\":\"stoppedWithoutMedia\"}"
}

tempStorageError

Failure to store the recording in the temporary storage

Parameters

Name Description
type: string The type of alarm.
recordingId: string The recordingId of the failed recording.
domain: string The domain of the tenant.
error: string Error description
errorDetails: string Details for the error

Example

{
    "event": "tempStorageError",
    "type": "tempStorageError",
    "recordingId": "aa2763a0-f00d-11e9-b265-41d830bfc3ea",
    "domain": "sip.example.com"
}

stopRecordingError

This alarm is generated if the STOPRECORDING command fails.

Parameters

Name Description
type: string The type of alarm.
event: string The original SQS event that triggered the failed command.
error: string Error description

Example

{
    "type": "stopRecordingError",
    "error": "recordingId does not match eventId"
}

cancelRecordingError

This alarm is generated if the CANCELRECORDING command fails.

Parameters

Name Description
type: string The type of alarm.
event: string The original SQS event that triggered the failed command.
error: string Error description

Example

{
    "type": "cancelRecordingError",
    "error": "recordingId does not match eventId"
}

eventNotificationError

This alarm is generated if a publishing a notification fails.

Parameters

Name Description
type: string The type of alarm.
event: string The original SQS event that triggered the failure.
error string

Example

{
    "type": "eventNotificationError",
    "error": "recordingId does not match eventId"
}

tempRecordingDeleted

This alarm is generated when a recording file is deleted from the temporary storage due to expiration. This means that it is automatically deleted and the DELETERECORDING command has not been sent in time.

Parameters

Name Description
type: string The type of alarm.
recordingId: string The recordingId of the recording being deleted.
domain: string The domain of the tenant.
service: string The affected service.
modifiedDate: string The timestamp of when the recording was last modified or created.
error: string Error description.

Example

{
    "event": "tempRecordingDeleted",
    "type": "tempRecordingDeleted",
    "recordingId": "aa2763a0-f00d-11e9-b265-41d830bfc3ea",
    "domain": "sip.example.com",
    "service": "siprec",
    "error": "Recording id 9b1ace70-d0a4-11e9-841f-d3ec0b98f0e9 expired."
}

apiRequestError

This alarm is generated if the system fails to call the newCall API endpoint.

Parameters

Name Description
type: string The type of alarm.
domain: string The domain of the tenant.
recordingId: string recordingId of the call that triggered the request.
error: string Error description
method: string HTTP request method of the failed request
requestUri: string HTTP request URI of the failed request
statusCode: number HTTP status code for the response to the failed request
statusMessage: string HTTP status message for the response to the failed request

Example

{
    "event": "apiRequestError",
    "type": "apiRequestError",
    "domain": "company.com",
    "recordingId": "0de2bc60-14da-11e9-a3d8-2f24dd9af78e",
    "error": "Error calling newCall API",
    "method": "POST",
    "requestUri": "https://example.com/newCall",
    "statusCode": 500,
    "statusMessage": "Internal Server Error"
}