Alexa.Education.School.Communication Interface

Implement the Alexa.Education.School.Communication interface to enable students and parents to ask questions about school communications such as announcements, alerts, and reminders.

For the list of locales that are supported for the School.Communication interface, see List of Capability Interfaces and Supported Locales.

Utterances

When you use the Alexa.Education.School.Communication interface, the voice interaction model is already built for you. The following examples show some user utterances:

Alexa, are there any posts from my professors?
Alexa, are there any class announcements for Jack?
Alexa, did Tom's teacher leave any messages about him?
Alexa, are there any updates from the school?
Alexa, are there any posts to Peter's journal?

Request

The Get request queries a list of recent school communications or updates that match the request query. This request has query parameters to filter for studentId (optional) and courseId (optional).

The payload of the Get request contains the following fields.

Field Description Type

paginationContext

Pagination information

PaginationContext object for requests

query

Match-all query parameters to filter for studentId (optional) and courseId (optional)

Object

locale

Locale that identifies the user's language

string enum

The following is an example of a Get request.

{
  "request": {
    "header": {
      "namespace": "Alexa.Education.School.Communication",
      "name": "Get",
      "messageId": "ExampleMessageID",
      "interfaceVersion": "1.0"
    },
    "authorization": {
      "type": "BearerToken",
      "token": "ExampleBearerToken"
    },
    "payload": {
      "paginationContext": {
        "maxResults": 5,
        "nextToken": "ExampleNextToken"
      },
      "query": {
        "matchAll": {
          "studentId": "1184"
        }
      },
      "locale": "en-US"
    }
  }
}

Response

If you handle a Get request successfully, respond with a GetResponse object.

The payload of a GetResponse object contains the following fields.

Field Description Type Required

paginationContext

Pagination information

PaginationContext object for responses

No

schoolCommunications

The results of the query

Array of SchoolCommunication objects

Yes

The following is an example of GetResponse.

{
  "response": {
    "header": {
      "namespace": "Alexa.Education.School.Communication",
      "name": "GetResponse",
      "messageId": "ExampleMessageID",
      "interfaceVersion": "1.0"
    },
    "payload": {
      "paginationContext": {
        "totalCount": 1
      },
      "schoolCommunications": [
        {
          "id": "update_001",
          "type": "GENERIC_FROM",
          "kind": "ANNOUNCEMENT",
          "from": "Ms. Fizzle",
          "content": {
            "type": "PLAIN_TEXT",
            "text": "Homework1 is now available.Its due by 30th April."
          },
          "publishedTime": "2019-04-12T00:00:00Z"
        },
        {
          "id": "update_002",
          "type": "REMINDER",
          "remindTime": "2019-05-30T09:00:00Z",
          "content": {
            "type": "PLAIN_TEXT",
            "text": "There is an upcoming school bake sale next Sunday."
          },
          "publishedTime": "2019-04-12T00:00:00Z"
        },
        {
          "id": "update_003",
          "type": "BEHAVIORAL_UPDATE",
          "studentId": "student_001",
          "studentName": "Hannah",
          "content": {
            "type": "PLAIN_TEXT",
            "text": "Hannah achieved Amazing Learner badge!"
          },
          "publishedTime": "2019-04-12T00:00:00Z"
        }
      ]
    }
  }
}

Prompt behavior for communication types

Alexa's response to the user begins with a prompt that depends on the communication type, as shown in the following table. For details on the fields that each communication type include, see SchoolCommunication.

School Communication Type Prompt Intro

GENERIC_FROM

<kind> from <from>: "<content text>"
Examples:
An announcement from Ms. Fizzle: ….
An update from Ms. Fizzle: ….
A post from Ms. Fizzle: …

GENERIC_FOR

<kind> for <for>: "<content text>"
Examples:
An announcement for Hanna: ….
An update for Jack: ….
A notice for Paul: ….

PRIVATE_MESSAGE

A message from <author>. Would you like me to read it?
(If the user says yes) "<content text>"

BEHAVIORAL_UPDATE

A behavioral update for <StudentName>: "<content text>"

REMINDER

A reminder for <Weekday, Month, Date using remindTime field>: "<content text>"
Example:
A reminder for Wednesday, March 1st: …

COURSE_DISCUSSION

A discussion post from <author> in <courseName>: "<content text>"