Your Alexa Dashboards Settings

Alexa.MeetingClientController Interface

The Alexa.MeetingClientController interface describes the messages used to join a meeting. For more information, see Build Skills for Conferencing Devices.

Discovery

When you describe an endpoint that implements MeetingClientController in a discover response, you must indicate whether it implements the optional JoinScheduledMeeting directive.

Discovery Response example


{
    "event": {
        "header": {
            "namespace": "Alexa.Discovery",
            "name": "Discover.Response",
            "payloadVersion": "3",
            "messageId": "2b7f08b3-02b1-4548-a477-d2fdf67406d4"
        },
        "payload": {
            "endpoints": [{
                "endpointId": "uniqueId",
                "manufacturerName": "MyConferencingManufacturer",
                "friendlyName": "phone",
                "description": "This is a smart conferencing equipment in Meeting Room 15.104",
                "displayCategories" : ["OTHER"],
                "cookie": {},
                "capabilities": [{
                        "type": "AlexaInterface",
                        "interface": "Alexa.MeetingClientController",
                        "supportsScheduledMeeting": false,
                        "properties": {},
                        "version": "1.0"
                    },
                    {
                        "type": "AlexaInterface",
                        "interface": "Alexa.Calendar",
                        "properties": {},
                        "version": "1.0"
                    }
                ]
            }]
        }
    }
}

Directives

You must implement the JoinMeeting and EndMeeting directives. You can optionally implement JoinScheduledMeeting and you indicate support for this directive with the supportsScheduleMeeting flag in the discovery response for the endpoint.

JoinMeeting

Represents a request to join a meeting, given a meeting identifier and protocol. This directive is sent when a user wants to start an ad-hoc meeting. The meeting endpoint, provider and protocol are set in the Alexa for Business console. The ID and optional pin comes from the customer’s interaction with Alexa.

Message flow

User: Alexa, start the meeting Id #meetingId

-or-

User: Alexa, start the meeting

Alexa: What is your meeting ID?
User: 1234567

Optionally:

Alexa: What is your meeting pin?
User: 7654321

Alexa sends JoinMeeting directive

Example Request

{
    "directive": {
        "endpoint": {
            "endpointId": "applianceId",
            "cookie": {},
            "scope": {
                "type": "BearerTokenWithPartition",
                "token": "access-token-from-skill",
                "partition": "room101",
                "userId": "<user_id>"
            }
        },
        "header": {
            "namespace": "Alexa.MeetingClientController",
            "name": "JoinMeeting",
            "messageId": "15d0ec9d-801d-4f51-9321-206510d64d9c",
            "payloadVersion": "3",
            "correlationToken": "<correlation_token>"
        },
        "payload": {
            "meeting": {
                "id": "1234567",
                "pin": "7654321",
                "endpoint": "54.19.29.39",
                "protocol": "sip",
                "provider": "chime"
            }
        }
    }
}

Payload details

Field Description Type Required
meeting Describes a meeting with a meeting provider and communication protocol, and optional identifier and pin. object Yes
meeting.pin The pin to access the meeting. String No
meeting.endpoint The meeting endpoint, typically a URL. String Yes
meeting.id The meeting identifier string No
meeting.protocol The protocol used to initiate the meeting session, such as SIP. String enumeration value: Accepted values: SIP, SIPS, H323 Yes
meeting.provider Meeting provider such as Amazon Chime or Skype for Business. String Yes

EndMeeting

Represents a request to end a meeting. When you receive this directive, you should end all active meetings.

Message flow

User: Alexa, end the meeting

Alexa sends EndMeeting directive

Example request

{
    "directive": {
        "endpoint": {
            "endpointId": "applianceId",
            "cookie": {},
            "scope": {
                "type": "BearerTokenWithPartition",
                "token": "access-token-from-skill",
                "partition": "room101",
                "userId": "<user_id>"
            }
        },
        "header": {
            "namespace": "Alexa.MeetingClientController",
            "name": "EndMeeting",
            "messageId": "15d0ec9d-801d-4f51-9321-206510d64d9c",
            "payloadVersion": "3",
            "correlationToken": "<correlation_token>"
        },
        "payload": {}
    }
}

JoinScheduledMeeting

Represents a request to join a meeting given a specific calendar event identifier. This directive typically follows a Calendar.GetCurrentMeeting directive. You should handle this directive if your skill has access to an organization’s calendar, and you can resolve the provided calendarEventId to a meeting on that calendar.

If you support JoinScheduledMeeting, report that you do a discovery response for the endpoint with the supportScheduleMeeting flag. See Discovery for an example.

Message flow

User: Alexa, start the meeting

Alexa sends Calendar.GetCurrentMeeting directive
Skill sends Response event with meeting information
Alexa: Do you want to join meeting organized by meeting organizer?
User: Yes

Alexa sends MeetingClientController.JoinScheduledMeeting directive

If a meeting can’t be found or the user declines the meeting, then the behavior reverts to the JoinMeeting flow.

Example Request


{
    "directive": {
        "endpoint": {
            "endpointId": "applianceId",
            "cookie": {},
            "scope": {
                "type": "BearerTokenWithPartition",
                "token": "access-token-from-skill",
                "partition": "room101"
            }
        },
        "header": {
            "namespace": "Alexa.MeetingClientController",
            "name": "JoinScheduledMeeting",
            "messageId": "15d0ec9d-801d-4f51-9321-206510d64d9c",
            "payloadVersion": "3",
            "correlationToken": "<correlation_token>"
        },
        "payload": {
            "calendarEventId": "1234567890"
        }
    }
}

Payload details

Field Description Type Required
calendarEventId A unique identifier of the meeting. The calendarEventId should resolve to a meeting object to start or join a meeting with the meeting provider. string Yes

Properties and Events

For this interface, you must reply:

  • Synchronously, which means you send a Response to Alexa from the Lambda function.

When you send a Response, you should include the state of reportable properties in the context of the message

Reportable Properties

This interface does not define any reportable properties.

Response

When a directive to join or end a meeting is successfully handled, you should respond with a Response event.

{
    "event": {
        "header": {
            "namespace": "Alexa ",
            "name": " Response",
            "messageId": "c60bc9c1-63c8-4cfc-ae44-22c43140c32e",
            "payloadVersion": "3",
            "correlationToken": "<correlation_token>"
        },
        "payload": {}
    }
}

ErrorResponse

You should reply with an error if you cannot complete the customer request for some reason. See Error.Response for more details.

Interface Description
Alexa.Calendar Finds a meeting on an organizational calendar.