Azure Communication Services - Advanced Messaging events

This article provides the properties and schema for Communication Services Advanced Messaging events. For an introduction to event schemas, see Azure Event Grid event schema.

Event types

Azure Communication Services emits the following Advanced Messaging event types:

Event type Description
Microsoft.Communication.AdvancedMessageReceived Published when Communication Services Advanced Messaging receives a message.
Microsoft.Communication.AdvancedMessageDeliveryStatusUpdated Published when Communication Services Advanced Messaging receives a status update for a previously sent message notification.
Microsoft.Communication.AdvancedMessageAnalysisCompleted(Preview) Published when Communication Service completes an AI Analysis with a customer message.

Event responses

When an event is triggered, the Event Grid service sends data about that event to subscribing endpoints.

This section contains an example of what that data would look like for each event.

Microsoft.Communication.AdvancedMessageReceived event

Published when Communication Services Advanced Messaging receives a message.

Example scenario: A WhatsApp user sends a WhatsApp message to a WhatsApp Business Number that is connected to an active Advanced Messaging channel in a Communication Services resource. As a result, a Microsoft.Communication.AdvancedMessageReceived with the contents of the user's WhatsApp message is published.

Attribute list

Details for the attributes specific to Microsoft.Communication.AdvancedMessageReceived events.

Attribute Type Nullable Description
channelType string ✔️ Channel type of the channel that the message was sent on. Ex. "whatsapp".
from string ✔️ Sender ID that sent the message.
to string ✔️ The channel ID that received the message, formatted as a GUID.
receivedTimestamp DateTimeOffset ✔️ Timestamp of the message.
content string ✔️ The text content in the message.
media MediaContent ✔️ Contains details about the received media.
context MessageContext ✔️ Contains details about the received media.
button ButtonContent ✔️ Contains details about the received media.
interactive InteractiveContent ✔️ Contains details about the received media.
MediaContent
Attribute Type Nullable Description
mimeType string MIME type of the media. Used to determine the correct file type for media downloads.
id string Media ID. Used to retrieve media for download, formatted as a GUID.
fileName string ✔️ The filename of the underlying media file as specified when uploaded.
caption string ✔️ Caption text for the media object, if supported and provided.
MessageContext
Attribute Type Nullable Description
from string ✔️ The WhatsApp ID for the customer who replied to an inbound message.
id string ✔️ The message ID for the sent message for an inbound reply.
ButtonContent
Attribute Type Nullable Description
text string ✔️ The text of the button.
payload string ✔️ The payload, set up by the business, of the button that the user selected.
InteractiveContent
Attribute Type Nullable Description
type InteractiveReplyType ✔️ Type of the interactive content.
buttonReply InteractiveButtonReplyContent ✔️ Sent when a customer selects a button.
listReply InteractiveListReplyContent ✔️ Sent when a customer selects an item from a list.
InteractiveReplyType
Value Description
buttonReply The interactive content is a button.
listReply The interactive content is a list.
unknown The interactive content is unknown.
InteractiveButtonReplyContent
Attribute Type Nullable Description
id string ✔️ ID of the button.
title string ✔️ Title of the button.
InteractiveListReplyContent
Attribute Type Nullable Description
id string ✔️ ID of the selected list item.
title string ✔️ Title of the selected list item.
description string ✔️ Description of the selected row.

Examples

Text message received
[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{resourcegroup-name}/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
  "subject": "advancedMessage/sender/{sender@id}/recipient/11111111-1111-1111-1111-111111111111",
  "data": {
    "content": "Hello",
    "channelType": "whatsapp",
    "from": "{sender@id}",
    "to": "11111111-1111-1111-1111-111111111111",
    "receivedTimestamp": "2023-07-06T18:30:19+00:00"
  },
  "eventType": "Microsoft.Communication.AdvancedMessageReceived",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-07-06T18:30:22.1921716Z"
}]
Media message received
[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{resourcegroup-name}/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
  "subject": "advancedMessage/sender/{sender@id}/recipient/11111111-1111-1111-1111-111111111111",
  "data": {
    "channelType": "whatsapp",
    "media": {
      "mimeType": "image/jpeg",
      "id": "22222222-2222-2222-2222-222222222222",
      "caption": "This is a media caption"
    },
    "from": "{sender@id}",
    "to": "11111111-1111-1111-1111-111111111111",
    "receivedTimestamp": "2023-07-06T18:30:19+00:00"
  },
  "eventType": "Microsoft.Communication.AdvancedMessageReceived",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-07-06T18:30:22.1921716Z"
}]

Microsoft.Communication.AdvancedMessageDeliveryStatusUpdated event

Published when Communication Services Advanced Messaging receives a status update for a previously sent message notification.

Example scenario: Contoso uses an active Advanced Messaging channel connected to a WhatsApp Business Account to send a WhatsApp message to a WhatsApp user. WhatsApp then replies to Contoso's Advanced Messaging channel with the status of the previously sent message. As a result, a Microsoft.Communication.AdvancedMessageDeliveryStatusUpdated event containing the message status is published.

Attribute list

Details for the attributes specific to Microsoft.Communication.AdvancedMessageReceived events.

Attribute Type Nullable Description
channelType string ✔️ Channel type of the channel that the message was sent on.
from string ✔️ The channel ID that sent the message, formatted as a GUID.
to string ✔️ Recipient ID that the message was sent to.
receivedTimestamp DateTimeOffset ✔️ Timestamp of the message.
messageId string ✔️ The ID of the message, formatted as a GUID.
status string ✔️ Status of the message. Possible values include Sent, Delivered, Read, and Failed. For more information, see Status.
error ChannelEventError ✔️ Contains the details of an error.
ChannelEventError
Attribute Type Nullable Description
channelCode string ✔️ The error code received on this channel.
channelMessage string ✔️ The error message received on this channel.
Status
Value Description
Sent The messaging service sent the message to the recipient
Delivered The message recipient received the message
Read The message recipient read the message
Failed The message failed to send correctly

Examples

Update for message delivery
[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{resourcegroup-name}/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
  "subject": "advancedMessage/22222222-2222-2222-2222-222222222222/status/Sent",
  "data": {
    "messageId": "22222222-2222-2222-2222-222222222222",
    "status": "Sent",
    "channelType": "whatsapp",
    "from": "{sender@id}",
    "to": "{receiver@id}",
    "receivedTimestamp": "2023-07-06T18:42:28+00:00"
  },
  "eventType": "Microsoft.Communication.AdvancedMessageDeliveryStatusUpdated",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-07-06T18:42:28.8454662Z"
}]
Update for message delivery with failure
[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{resourcegroup-name}/providers/microsoft.communication/communicationservices/acsxplatmsg-test",
  "subject": "advancedMessage/22222222-2222-2222-2222-222222222222/status/Failed",
  "data": {
    "messageId": "22222222-2222-2222-2222-222222222222",
    "status": "Failed",
    "channelType": "whatsapp",
    "from": "{sender@id}",
    "to": "{receiver@id}",
    "receivedTimestamp": "2023-07-06T18:42:28+00:00",
    "error": {
      "channelCode": "131026",
      "channelMessage": "Message Undeliverable."
    }
  },
  "eventType": "Microsoft.Communication.AdvancedMessageDeliveryStatusUpdated",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-07-06T18:42:28.8454662Z"
}]

Microsoft.Communication.AdvancedMessageAnalysisCompleted(Preview) event

Published when Communication Service completes an AI Analysis with a customer message.

Example scenario: A WhatsApp user sends a WhatsApp message to a WhatsApp Business Number that is connected to an active Advanced Messaging channel in a Communication Services resource that has opted in for Message Analysis feature. As a result, a Microsoft.Communication.AdvancedMessageAnalysisCompleted with the analysis of the user's WhatsApp message is published.

Attribute list

Details for the attributes specific to Microsoft.Communication.AdvancedMessageAnalysisCompleted events.

Attribute Type Nullable Description
channelType string ✔️ Channel type of the channel that the message was sent on.
from string ✔️ The channel ID that sent the message, formatted as a GUID.
to string ✔️ Recipient ID that the message was sent to.
receivedTimestamp DateTimeOffset ✔️ Timestamp of the message.
originalMessage string ✔️ The original user message.
intentAnalysis string ✔️ The intent analysis of the received user message.
languageDetection LanguageDetection ✔️ Contains the language detection of the received user message.
extractedKeyPhrases List<string> ✔️ Contains the key phrases of of the received user message.
LanguageDetection
Attribute Type Nullable Description
language string ✔️ The language detected.
confidenceScore float ✔️ The confidence score of the language detected.
translation string ✔️ The message translation.

Examples

Message Analysis Completed
[{
  "id": "df1c2d92-6155-4ad7-a865-cb8497106c52",
  "topic": "/subscriptions/{subscription-id}/resourcegroups/{resourcegroup-name}/providers/microsoft.communication/communicationservices/acsxplatmsg-test",
  "subject": "advancedMessage/sender/{sender@id}/recipient/00000000-0000-0000-0000-000000000000",
  "data": {
    "originalMessage": "Hello, could u help me order some flowers for Mother’s Day?",
    "channelType": "whatsapp",
    "languageDetection": {
      "language": "English",
      "confidenceScore": 0.99
    },
    "intentAnalysis": "Order request: The customer is contacting customer service to request assistance with ordering flowers for Mother's Day.",
    "extractedKeyPhrases": [
      "order",
      "flowers",
      "Mother's Day"
    ],
    "from": "{sender@id}",
    "to": "00000000-0000-0000-0000-000000000000",
    "receivedTimestamp": "2024-07-05T19:10:35.28+00:00"
  },
  "eventType": "Microsoft.Communication.AdvancedMessageAnalysisCompleted",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2024-07-05T19:10:35.2806524Z"
}]

Quickstart

For a quickstart that shows how to subscribe for Advanced Messaging events using web hooks, see Quickstart: Handle Advanced Messaging events.