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.
Related Interfaces
| Interface | Description |
|---|---|
| Alexa.Calendar | Finds a meeting on an organizational calendar. |