Configure automatic closure of conversations using web API
This article demonstrates how you can configure the auto-close duration of a conversation using the Web API.
Important
Duration-based automatic closure of conversations isn't supported for records that're configured for unified routing. When you delete a routed record, the associated queue item is deleted. The live work item or conversation will also be deleted as part of the clean-up process.
Use the following GET
request to fetch all the configuration records that have been defined out of the box.
Request
GET [Organization URI]/api/data/v9.1/msdyn_occhannelstateconfigurations
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Response
{
"@odata.context":"[Organization URI]/api/data/v9.1/$metadata#msdyn_occhannelstateconfigurations",
"value":[
{
"@odata.etag":"W/\"1379367\"",
"_organizationid_value":"11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
"msdyn_name":"Live Chat - Open",
"statecode":0,
"statuscode":1,
"_msdyn_occhannelconfigurationid_value":"836717fd-5578-e911-8196-000d3af7d71e",
"msdyn_autocloseliveworkitemafter":20,
"modifiedon":"2019-10-01T13:41:51Z",
"_modifiedby_value":"d6e088ce-8866-4b3d-8ea2-150ad72e2b79",
"msdyn_ocliveworkitemstate":0,
"msdyn_showconfirmationonsessionclose":false,
"versionnumber":1379367,
"msdyn_occhannelstateconfigurationid":"6283ab63-5778-e911-8196-000d3af7d71e",
"createdon":"2019-10-01T13:41:51Z",
"_createdby_value":"d6e088ce-8866-4b3d-8ea2-150ad72e2b79",
"_modifiedonbehalfby_value":null,
"importsequencenumber":null,
"overriddencreatedon":null,
"_createdonbehalfby_value":null,
"utcconversiontimezonecode":null,
"timezoneruleversionnumber":null
},
{
"@odata.etag":"W/\"1379368\"",
"_organizationid_value":"11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
"msdyn_name":"Live Chat - Active",
"statecode":0,
"statuscode":1,
"_msdyn_occhannelconfigurationid_value":"836717fd-5578-e911-8196-000d3af7d71e",
"msdyn_autocloseliveworkitemafter":null,
"modifiedon":"2019-10-01T13:41:51Z",
"_modifiedby_value":"d6e088ce-8866-4b3d-8ea2-150ad72e2b79",
"msdyn_ocliveworkitemstate":1,
"msdyn_showconfirmationonsessionclose":true,
"versionnumber":1379368,
"msdyn_occhannelstateconfigurationid":"e2737c9a-5778-e911-8196-000d3af7d71e",
"createdon":"2019-10-01T13:41:51Z",
"_createdby_value":"d6e088ce-8866-4b3d-8ea2-150ad72e2b79",
"_modifiedonbehalfby_value":null,
"importsequencenumber":null,
"overriddencreatedon":null,
"_createdonbehalfby_value":null,
"utcconversiontimezonecode":null,
"timezoneruleversionnumber":null
},
]
}
The msdyn_name
attribute in the msdyn_occhannelstateconfiguration
entity mentions the channel and state of the conversation. For more information about conversation states, see Understand conversation states in Omnichannel for Customer Service.
You can make a GET
request to the msdyn_occhannelconfiguration
entity to fetch all the existing channel records. For each of these channels, you can see its state when you query the msdyn_occhannelstateconfiguration
entity.
Make a PATCH
request to the msdyn_occhannelstateconfiguration
entity record and update the value of the msdyn_autocloseliveworkitemafter
attribute.
PATCH [Organization URI]/api/data/v9.1/msdyn_occhannelstateconfigurations(6283ab63-5778-e911-8196-000d3af7d71e)
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
{
"msdyn_autocloseliveworkitemafter":5
}
Here's a sample code for updating existing records in the msdyn_occhannelstateconfigurations
entity:
var data =
{
"msdyn_autocloseliveworkitemafter": 2
}
// update the record
Xrm.WebApi.updateRecord("msdyn_occhannelstateconfiguration", "6283ab63-5778-e911-8196-000d3af7d71e", data).then(
function success(result) {
console.log("Auto close time updated");
},
function (error) {
console.log(error.message);
}
);
Note
The value for the msdyn_autocloseliveworkitemafter
attribute is in minutes. If you want to provide a value that is in days, you'll have to convert it into minutes. For example, 1 day will be 24 x 60 = 1,440 minutes.
The conversation closes automatically if the value of the msdyn_autocloseliveworkitemafter
attribute is greater than the value of the createdon
attribute.
If the conversation is in the wrap-up state—that is, the agent has resolved the issue and can now perform some post-conversation steps to close the conversation—then the conversation is closed if the value of the msdyn_autocloseliveworkitemafter
attribute is greater than the value of the wrapupinitiatedon
attribute.
Important
The decision to close a conversation based on the values of the msdyn_autocloseliveworkitemafter
and createdon
attributes is made when a scheduled job runs, and not when the PATCH
Web API request is run.
Configure automatic closure of Wrap-up state for live chat
The default time for automatically closing a live chat that's in Wrap-up state is 15 minutes. The value is defined in the msdyn_autocloseliveworkitemafter
attribute and can be programmatically changed to suit your business needs.
The value defined for the Block capacity for wrap-up field in the workstream overrides the value specified in the msdyn_autocloseliveworkitemafter
attribute, if it is more than the value for the msdyn_autocloseliveworkitemafter
attribute. For example, if you have set the value for blocking agent's capacity as 15 minutes and the msdyn_autocloseliveworkitemafter
attribute as 10 minutes, a conversation in Wrap-up state will occupy capacity for 15 minutes and will be eligible for automatic closure only after 15 minutes.
Next steps
Update an entity using Web API