设置频道处理器 - Amazon Chime SDK

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

设置频道处理器

要开始使用频道流,您需要先创建一个处理器 Lambda 函数来处理您的用例的预处理。例如,您可以更新消息内容或元数据、拒绝消息并阻止发送消息,或者允许原始消息通过。

先决条件
  • Lambda 函数必须与位于同一个 AWS 账户和相同 AWS 区域中。 AppInstance

授予调用权限

您必须向 Amazon Chime SDK 消息收发服务授予权限才能调用 Lambda 资源。有关权限的更多信息,请参阅将基于资源的策略用于 AWS Lambda。例如:

主体:“messaging.chime.amazonaws.com”

动作:lambda:InvokeFunction

效果:允许

AWS: SourceAccount: 你的 AWS AccountId

AWS: SourceArn: "arn:aws:chime:region:AWS AccountId: appInstance/"

注意

您可以提供特定的应用程序实例 ID 来调用您的处理器,也可以使用通配符允许账户中的所有 Amazon Chime SDK 应用程序实例调用您的处理器。

授予回调权限

您还需要允许您的处理器 Lambda 函数调用 ChannelFlowCallback API。有关执行此操作的信息,请参阅 AWS Lambda 开发人员指南中的 AWS Lambda 执行角色

您可以向 Lambda 函数的执行角色添加内联策略。此示例允许处理器调用 ChannelFlowCallback API

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "chime:ChannelFlowCallback" ], "Resource": [ "arn:aws:chime:Region:AwsAccountId:appInstance/*" ] } ] }
注意

遵循 Lambda 函数的最佳实践。有关更多信息,请参阅以下主题:

调用处理器 Lambda 函数

当用户发送消息时,以下输入请求会调用处理器 Lambda 函数。

{ "EventType": "string" "CallbackId": "string" "ChannelMessage": { "MessageId": "string", "ChannelArn": "string", "Content": "string", "Metadata": "string", "Sender":{ "Arn": "string", "Name": "string" }, "Persistence": "string", "LastEditedTimestamp": "string", "Type": "string", "CreatedTimestamp": "string", } }
EventType

正在发送到处理器的事件。该值是一个 CHANNEL_MESSAGE_EVENT 常数。

CallbackId

从处理器调用 ChannelFlowCallback API 时使用的令牌。

ChannelMessage

ChannelArn该频道的 ARN

Content:待处理的消息内容

CreatedTimestamp消息的创建时间

LastEditedTimestamp编辑消息的时间

MessageId消息标识符

Metadata:待处理的消息元数据

Persistence:布尔值,用于控制消息是否保留在后端。有效值:PERSISTENT | NON_PERSISTENT

Sender:消息发件人。类型:一个identity对象

键入消息类型。 ChannelFlow仅支持STANDARD消息类型。有效值:STANDARD

处理器函数决定每条消息的以下内容。

  • 是更新消息内容、元数据还是两者兼而有之

  • 是否拒绝消息

  • 是否保留消息不变

处理完成后,处理器 Lambda 函数会将结果发送回 Amazon Chime SDK 消息传递服务,这样就可以将消息发送给所有收件人。消息状态一直处于 PENDING 标记状态,直到处理器 Lambda 函数发回结果。处理器 Lambda 函数有 48 小时的时间来发送结果。在此之后,我们无法保证消息传递,ChannelFlowCallback API 会引发“Forbidden Exception”错误消息。要发回结果,请调用 ChannelFlowCallback API。