Troubleshooting
Contents
What Happens if MCP fails to send recordings to Recording Processor?
If you have scheduled maintenance for an extended period of time which could cause lost recordings, Genesys recommends that you reconfigure Media Control Platform (MCP) to stop posting recording, so that you do not have to handle the failed recordings.
To reconfigure MCP:
- Stop MCP.
- Set the recordnumparallelpost parameter in the mcp section to 0.
- Restart MCP.
This disables the MCP posting functionality and all recording/meta data files will continue to accumulate in the cache/record directory. - When suitable, stop MCP, set the recordnumparallelpost parameter back to the
recommended/default value and restart MCP.
MCP will now scan the cache/record directory and post the requests for the recording files that are present.
Handling Failed Recordings
For handling MCP post failures in the cache directory:
- Find the MCP's $InstallationRoot$/cache/record/failed directory for the following file types:
- [audiofilename]-htccmetadata.json
- [audiofilename]
- [audiofilename].pem (provided only when encryption is enabled)
- 743CTLVFHH0TH7HHB4D1PTS5US00000F_2014-10-04_11-47-25-00780142-10004349-00000001.mp3-htccmetadata.json
- 743CTLVFHH0TH7HHB4D1PTS5US00000F_2014-10-04_11-47-25-00780142-10004349-00000001.mp3
- Submit these files to:
- Recording Processor
- Recording storage (WebDAV)
- Recording post failures can be due to incorrect provisioning in the IVR Profile, so before posting the metadata file to Recording Processor, look at the metadata file to make sure provisioning is correct. The following is an example of a metadata json file:
{ "mediaFiles": [ { "duration": "0", "ivrprofile": "DefaultProfile", "mediaDescriptor": { "path": "http://ca-to-irp02/recordings/743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21-00780143-100043F9-00000001.mp3", "storage": "webDAV" }, "mediaId": "743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21-00780143-100043F9-00000001.mp3", "parameters": { "agentId": "1001", "ani": "5000", "callUuid": "743CTLVFHH0TH7HHB4D1PTS5US00000G", "connId": "007002526eab5010", "dateTime": "2014-10-07T15:46:21Z", "dnis": "3001", "id": "743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21", "recordDN": "2001", "rp.speechminer_auth": "user:password", "rp.speechminer_uri": "http://ca-to-macon2/interactionreceiver", "sipsAppName": "SIPServer" }, "size": "0", "startTime": "2014-10-07T15:46:21Z", "stopTime": "2014-10-07T15:46:21Z", "tenant": "Environment", "type": "audio/mp3" } ] }Check for following items in the json file:
- mediaFiles[0].mediaDescriptor.path—Make sure this is the correct WebDAV address
- mediaFiles[0].parameters['rp.speechminer_uri']—Make sure this is the correct location of SpeechMiner Interaction Receiver
- mediaFiles[0].parameters['rp.speechminer_auth']—Make sure this is the correct authorization of SpeechMiner Interaction Receiver
- When encryption is enabled, edit the json file and manually add the pkcs7 headers which is the content of the .pem file (make sure that you replace the line break with \n). Use the following as an example:
{ "mediaFiles": [ { "duration": "0", "ivrprofile": "DefaultProfile", "mediaDescriptor": { "path": "http://ca-to-irp02/recordings/743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21-00780143-100043F9-00000001.mp3", "storage": "webDAV" }, "mediaId": "743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21-00780143-100043F9-00000001.mp3", "parameters": { "agentId": "1001", "ani": "5000", "callUuid": "743CTLVFHH0TH7HHB4D1PTS5US00000G", "connId": "007002526eab5010", "dateTime": "2014-10-07T15:46:21Z", "dnis": "3001", "id": "743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21", "recordDN": "2001", "rp.speechminer_auth": "user:password", "rp.speechminer_uri": "http://ca-to-macon2/interactionreceiver", "sipsAppName": "SIPServer" }, "size": "0", "startTime": "2014-10-07T15:46:21Z", "stopTime": "2014-10-07T15:46:21Z", "tenant": "Environment", "type": "audio/mp3", "pkcs7": "-----BEGIN PKCS7-----\nMIIBJQYJKoZIhvcNAQcDoIIBFjCCARICAQAxgeAwgd0CAQAwgYYwgYAxCzAJBgNV\nBAYTAkNBMQswCQYDVQQIDAJPTjEQMA4GA1UEBwwHTWFya2hhbTEQMA4GA1UECgwH\nR2VuZXN5czEOMAwGA1UECwwFQ2xvdWQxDDAKBgNVBAMMA0dJUjEiMCAGCSqGSIb3\nDQEJARYTZ2lyLWRldkBnZW5lc3lzLmNvbQIBBzANBgkqhkiG9w0BAQEFAARAry30\nyyZ/LU76eZvON+FWWMCPCjb/mR4b62dHy31O5wHfXrf6YrZIXMJgqh+T/4kYzQMq\ndefDKqjVKUOUi+I56zAqBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAkaESb2bwB\nKnCLYVzw2Csq\n-----END PKCS7-----\n" } ] } - When you are ready to submit the files, do the following steps in order:
- Issue an HTTP PUT to WebDAV:
curl -u [webdavauth] -T [audiofilename] [mediaFiles[0].mediaDescriptor.path]
Using this example above and assuming the webdav authorization is webdav:password, you will see the following returned:
curl -u webdav:passowrd -T 743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21-00780143-100043F9-00000001.mp3 http://ca-to-irp02/recordings/743CTLVFHH0TH7HHB4D1PTS5US00000G_2014-10-07_15-46-21-00780143-100043F9-00000001.mp3
- Issue an HTTP POST to Recording Processor:
curl -u [rpauth] -X POST -d @[metadatafile] --header "Content-Type: application/json" [rpuri]
where:
- [rpauth] is the Recording Processor authorization as per the IVR Profile
- [metadatafile] is the metadata json file in MCP's cache/failed directory
- [rpuri] is the Recording Processor URI as per the IVR Profile
Using the example above, you should see the following returned:
curl -u user:password -X POST -d @743CTLVFHH0TH7HHB4D1PTS5US00000F_2014-10-04_11-47-25-00780142-10004349-00000001.mp3 -htccmetadata.json --header "Content-Type: application/json" http://ca-to-macon2:8889/api/contact-centers//recordings/
- Issue an HTTP PUT to WebDAV:
What Happens if Recording Processor fails to send recordings to SpeechMiner or Web Services?
If Recording Processor fails to send recordings to SpeechMiner or Web Services for any reason, Recording Processor will continue trying to send these recordings until it exhausts the number of retries configured. When the number of retries have been exhausted, Recording Processor logs an INFO message to the log file with the corresponding JSON content that is not submitted to SpeechMiner or Web Services. The following steps show how to search for the specific messages in the log file to recover the post failure to SpeechMiner and Web Services.
Prerequisites:
- Make sure that the Recording Processor logging is set to the INFO level.
Handling Failed Recordings to Interaction Receiver (SpeechMiner)
- Search the Recording Processor log files for the follow message: "Metadata will not be sent to SM". For example:
grep "Metadata will not be sent to SM" recordingProcessor_071614_112548.log
The following log file snippet could be returned:
2014-07-16 11:27:53,252 process_metadata INFO Metadata will not be sent to SM: {"status": 1, "retries": 6, "dialedPhoneNumber": "91234", "region": "us", "mediaFiles": [{"mediaId": "DHMI6GITSD5D99H23MRA3P74IC00000C_2014-07-11_19-34-43-0078013C-10003C2A-00000001.mp3", "parameters": {"recordDN": "1234", "ani": "1234", "dateTime": "2014-07-11T19:34:43Z", "sipsAppName": "SIPServer", "connId": "0070024b5a25700c", "callUuid": "DHMI6GITSD5D99H23MRA3P74IC00000C", "dnis": "91234", "rp.speechminer_auth": "user:password", "id": "DHMI6GITSD5D99H23MRA3P74IC00000C_2014-07-11_19-34-43", "rp.speechminer_uri": "http://ca-to-macon2/interactionreceiver"} , "accessgroups": [], "duration": "3027", "stopTime": "2014-07-11T19:34:47Z", "startTime": "2014-07-11T19:34:44Z", "mediaDescriptor": {"path": "http://ca-to-irp02/recordings/DHMI6GITSD5D99H23MRA3P74IC00000C_2014-07-11_19-34-43-0078013C-10003C2A-00000001.mp3", "storage": "webDAV"} , "callUUID": "DHMI6GITSD5D99H23MRA3P74IC00000C", "ivrprofile": "DefaultProfile", "size": "11952", "type": "audio/mp3", "tenant": "Environment", "partitions": []}], "eventHistory": [], "callerPhoneNumber": "1234", "id": "DHMI6GITSD5D99H23MRA3P74IC00000C", "ccid": "79566087-0535-4f30-bb07-2c95a22aaa89"} - Save the json string after "Metadata will not be sent to SM:" as a text file.
- Issue an HTTP POST to Interaction Receiver for the saved json text file. For example:
curl -u <user:password> -X POST -d @json.txt --header "Content-Type: application/json" <http://speechminer/interactionreceiver>
Where:
- <user:password> is the user/password authorization for Interaction Receiver
- <http://speechminer/interactionreceiver> is the URI of Interaction Receiver
Handling Failed Recordings to Web Services
- Search the Recording Processor files for the following message: "Metadata will not be sent to HTCC". For example,
grep "Metadata will not be sent to HTCC" recordingProcessor_071714_054043.log
The following log file snippet could be returned:
2014-07-17 08:26:41,354 process_metadata INFO Metadata will not be sent to HTCC: {"status": 2, "retries": 6, "dialedPhoneNumber": "2001", "region": "us", "mediaFiles": [{"mediaId": "J0GOONKU6P74B4ASS9VGS1J2VS000002_2014-07-17_12-23-14-0078013C-10003F4B-00000001.mp3", "parameters": {"username": "person1", "agentId": "1001", "recordDN": "2001", "ani": "1234", "dateTime": "2014-07-17T12:23:14Z", "sipsAppName": "SIPServer", "connId": "0070024c1394e002", "callUuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "dnis": "2001", "rp.speechminer_auth": "user:password", "id": "J0GOONKU6P74B4ASS9VGS1J2VS000002_2014-07-17_12-23-14", "rp.speechminer_uri": "http://ca-to-macon2/interactionreceiver"} , "accessgroups": ["/team"], "duration": "15803", "stopTime": "2014-07-17T12:23:31Z", "startTime": "2014-07-17T12:23:15Z", "mediaDescriptor": {"path": "http://ca-to-irp02/recordings/J0GOONKU6P74B4ASS9VGS1J2VS000002_2014-07-17_12-23-14-0078013C-10003F4B-00000001.mp3", "storage": "webDAV"} , "callUUID": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "ivrprofile": "DefaultProfile", "partitions": [], "type": "audio/mp3", "tenant": "Environment", "size": "62352"}], "eventHistory": [{"calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "contact": {"phoneNumber": "1234", "type": "External", "name": "EXTERNAL"} , "occurredAt": "2014-07-17T12:23:12Z", "event": "Joined"}, {"calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "contact": {"phoneNumber": "1234", "type": "External", "name": "EXTERNAL"} , "occurredAt": "2014-07-17T12:23:31Z", "event": "Left"}, {"calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "contact": {"userName": "person1", "phoneNumber": "2001", "type": "User", "firstName": "Person", "lastName": "One"} , "occurredAt": "2014-07-17T12:23:14Z", "event": "Joined"}, {"calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "contact": {"userName": "person1", "phoneNumber": "2001", "type": "User", "firstName": "Person", "lastName": "One"} , "occurredAt": "2014-07-17T12:23:31Z", "event": "Left"}, {"eventId": "2014-07-17 12:23:14.613_J0GOONKU6P74B4ASS9VGS1J2VS000002", "calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "occurredAt": "2014-07-17T12:23:14Z", "event": "Data", "data": {"added": {"WrapUpTime": "0"} }}, {"eventId": "2014-07-17 12:23:15.677_J0GOONKU6P74B4ASS9VGS1J2VS000002", "calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "occurredAt": "2014-07-17T12:23:15Z", "event": "Data", "data": {"added": {"IW_CaseUid": "dcb04876-9eaf-4d17-923c-3d961d93cb86", "IW_BundleUid": "afe4a570-ca5d-466b-9f57-03f261d07717"} }}, {"eventId": "2014-07-17 12:23:16.220_J0GOONKU6P74B4ASS9VGS1J2VS000002", "calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "occurredAt": "2014-07-17T12:23:16Z", "event": "Data", "data": {"added": {"GSIP_RECORD": "ON", "GSIP_REC_FN": "J0GOONKU6P74B4ASS9VGS1J2VS000002_2014-07-17_12-23-14"} }}, {"eventId": "2014-07-17 12:23:31.370_J0GOONKU6P74B4ASS9VGS1J2VS000002", "calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "occurredAt": "2014-07-17T12:23:31Z", "event": "Data", "data": {"deleted": {"WrapUpTime": "0"} }}, {"eventId": "2014-07-17 12:23:31.377_J0GOONKU6P74B4ASS9VGS1J2VS000002", "calluuid": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "occurredAt": "2014-07-17T12:23:31Z", "event": "Data", "data": {"deleted": {"GSIP_RECORD": "ON"} }}], "callerPhoneNumber": "1234", "id": "J0GOONKU6P74B4ASS9VGS1J2VS000002", "ccid": "79566087-0535-4f30-bb07-2c95a22aaa89"} - Save the json string after "Metadata will not be sent to HTCC:" as a text file.
- Issue an HTTP POST to Web Services for the saved json text file. For example,
curl -u <user:password> -X POST -d @json.txt --header "Content-Type: application/json" <http://htcc/internal-api/contact-center/ {ccid}/recordings>Where:
- <user:password> is the user/password authorization for Web Services
- <http://htcc/internal-api/contact-center/{ccid}/recordings> is the URI of Web Services
- {ccid} is the contact center identifier on Web Services
You can find the contact center identifier from the initial Web Services setup, or you can look up the contact center id from the recording processor log file. In the first few lines of the log file you will find a GUID string as follows:
2014-07-17 05:40:43,746 contact_centers INFO Contact center (:79566087-0535-4f30-bb07-2c95a22aaa89) discovered.
The following example can be used to return the contact center ID:
curl -u user:password -X POST -d @json.txt --header "Content-Type: application/json" http://htcc/internal-api/contact-center/79566087-0535-4f30-bb07-2c95a22aaa89/recordings
How to collect logs to debug issues relating to login to the SpeechMiner UI
If you are having a problem logging into the SpeechMiner UI, you will need to collect the Network and Console log from the Chrome Developer Tools before and after the login attempts with the Preserve log checkbox enabled—for example:
Make sure that you have captured the requests for the following applications after you click the login button:
- Web Services
- Recording Crypto Server
- SpeechMiner
