

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 Amazon Chime SDK 构建服务器应用程序
<a name="build-server-app"></a>

以下部分中的信息说明了如何构建 Amazon Chime SDK 服务器应用程序。每个部分都根据需要提供了示例代码，您可以调整该代码以满足您的需求。

**Topics**
+ [为 Amazon Chime SDK 创建 IAM 用户或角色](create-iam-users-roles.md)
+ [配置 AWS 软件开发工具包以调用 Amazon Chime 软件开发工具包的 APIs](invoke-apis.md)
+ [为 Amazon Chime SDK 创建会议](create-meeting.md)
+ [为 Amazon Chime SDK 创建与会者](create-attendee.md)
+ [为 Amazon Chime SDK 向客户端发送响应](send-response-to-client.md)

# 为 Amazon Chime SDK 创建 IAM 用户或角色
<a name="create-iam-users-roles"></a>

您可以将用户创建为 IAM 用户或适合您的使用案例的角色。然后，您可以为其分配以下策略。这样可以确保您拥有服务器应用程序中嵌入的 AWS SDK 的必要权限。反过来，这允许您对会议和与会者资源执行生命周期操作。

```
   // Policy ARN:     arn:aws:iam::aws:policy/AmazonChimeSDK 
    // Description:    Provides access to Amazon Chime SDK operations
    {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "chime:CreateMeeting",
                "chime:DeleteMeeting",
                "chime:GetMeeting",
                "chime:ListMeetings",
                "chime:CreateAttendee",
                "chime:BatchCreateAttendee",
                "chime:DeleteAttendee",
                "chime:GetAttendee",
                "chime:ListAttendees"
            ],
            "Effect": "Allow",
            "Resource": "*"
     }
 ]}
```

# 配置 AWS 软件开发工具包以调用 Amazon Chime 软件开发工具包的 APIs
<a name="invoke-apis"></a>

此代码示例向您展示如何向 AWS SDK 传递凭证以及如何设置区域和终端节点。

```
    AWS.config.credentials = new AWS.Credentials(accessKeyId, secretAccessKey, null);
    const chime = new AWS.Chime({ region: 'us-east-1' });
    chime.endpoint = new AWS.Endpoint('https://service.chime.aws.amazon.com/console');
```

# 为 Amazon Chime SDK 创建会议
<a name="create-meeting"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html) API 调用接受一个必需参数，即 `ClientRequestToken`，该参数允许开发人员在唯一性上下文中传递内容。它还接受可选参数，例如代表要为会议选择的媒体服务数据面板区域的 `MediaRegion`、用于传递不透明标识符来代表会议主机的 `MeetingHostId`（如果适用），以及用于接收会议生命周期事件的 `NotificationsConfiguration`。默认情况下，Amazon 会 EventBridge 交付事件。或者，您也可以通过在 `NotificationsConfiguration` 中传递 SQS 队列 ARN 或 SNS 主题 ARN 来接收事件。API 返回一个 Meeting 对象`MeetingId`，该对象包含一个唯一的，`MediaRegion`以及带有一组媒体的`MediaPlacement`对象 URLs。

```
   meeting = await chime.createMeeting({
                ClientRequestToken: clientRequestToken,
                MediaRegion: mediaRegion,
                MeetingHostId: meetingHostId,
                NotificationsConfiguration: {
                   SqsQueueArn: sqsQueueArn,
                   SnsTopicArn: snsTopicArn
                }
            }).promise();
```

# 为 Amazon Chime SDK 创建与会者
<a name="create-attendee"></a>

创建会议后，您可以创建代表每个尝试加入媒体会话的用户的与会者资源。[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateAttendee.html) API 包含以下参数：
+ 要向其中添加用户的会议的 `MeetingId`。
+ `ExternalUserId`，可以是身份系统中任何不透明用户标识符。

例如，如果您使用 Active Directory（AD），则可以是 AD 中用户的 Object ID。之所以`ExternalUserId`有价值，是因为当客户端应用程序收到来自客户端的与会者事件时，它会传回给他们。 SDKs这使客户端应用程序了解谁加入或离开会议，并从服务器应用程序中检索有关该用户的其他信息，例如显示名称、电子邮件或图片。

调用 `CreateAttendee` API 会生成一个 `Attendee` 对象。该对象包含由服务生成的唯一 `AttendeeId`、传入的 `ExternalUserId`，以及允许与会者在会议期间或在 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_DeleteAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_DeleteAttendee.html) API 删除与会者之前访问会议的签名 `JoinToken`。

```
       attendee = await chime.createAttendee({
                MeetingId: meeting.MeetingId,
                ExternalUserId: externalUserId,
              }).promise();
```

# 为 Amazon Chime SDK 向客户端发送响应
<a name="send-response-to-client"></a>

创建会议和与会者资源后，服务器应用程序应对会议和与会者对象进行编码并将其发送回客户端应用程序。客户需要这些信息来引导 Amazon Chime SDK 客户端库，并使与会者能够通过基 JavaScript于 Web 或 Electron 的应用程序成功加入会议。