通过 Amazon Chime SDK 消息传递构建在线状态和输入指示器 商业生产力
使用 Amazon Chime SDK 消息功能建立存在感和打字指示器
关键要点
在本博客中,我们将学习如何使用 Amazon Chime SDK 消息 来构建应用程序的存在状态及打字指示器功能。通过使用现有的 API,开发者能够创建安全、可扩展的消息系统,连接用户社区,从而提高协作和互动体验。
Amazon Chime SDK 提供了一套实时通信组件,让开发者能够迅速将消息、音频、视频及屏幕共享功能纳入到他们的应用程序中。借助 Amazon Chime SDK 消息,开发人员可以在应用中实现用户的在线状态显示以及打字状态提示。
存在感
存在感是消息应用程序中的常见功能,其目的是维护一个状态,表明联系人是否在线并可接受消息。
以下是一些常见的存在感用例:
远程医疗 在虚拟候诊室中,患者可能会希望在移动设备上签到,并等待被叫到进行远程医疗。这使得护理提供者能够监控医生的状态,比如是否“正在看病”或“迟到 5 分钟”,并在医生状态更新为“可用”时启动视频会诊。
教育 在远程教育的场景中,教师或工作人员可以追踪学生的存在状态,以了解他们是否在特定频道中,或者是否忙于“考试”或“分组讨论”。
协作 在协作环境中,存在状态可以告知客户和同事用户是否在线,以及是否可以期待快速响应。例如,用户可以通知同事自己不在,或者正在通话中。
客服支持 如果您拥有在线帮助台系统,可能需要根据客户的响应度或在网站上的活动来跟踪他们是否已连接,以保持聊天会话的活跃。对于不再进行连接的客户,可以结束会话,或者代理可以在离线时进行跟进。
游戏 在游戏中,用户需要知道哪些朋友在线且可玩。当朋友在线时,了解他们是正在玩游戏还是在等待下一个游戏开始也很重要。这样用户可以加入朋友的游戏,或邀请朋友加入新的游戏会话。
智能消息路由 在许多使用存在感的场景中,它也可以用于智能通信路由。例如,在与客户聊天时,企业用户可以将状态设置为“离开”。此状态可以用于将本应在聊天房间传递的消息通过 SMS 发送至企业用户的手机。另一个用例是,当用户将状态设置为“忙碌”时,静音临时电话通知,并将消息发送给用户,指示有未接来电,或允许来电者留下简短的语音留言,然后将其转换为文本以发送给用户。
在本博客中,您将学习如何在频道中实现自动和自定义的存在状态,以及打字指示器。
注意:使用本博客创建的演示可能会产生 AWS 费用,详细信息请参见前提条件部分。
高层架构
自动存在状态
自动状态事件是短暂的控制消息,基于用户活动而短暂存在。客户端应用程序在频道中发布自动存在状态,例如“在线”、“闲置”、“忙碌”和“离线”,当用户连接到应用程序、活跃/非活跃于频道、开始/加入会议时发布相应的状态。
在演示代码中:
自动存在状态在频道中以非持久控制消息发布。发送者的客户端应用程序跟踪用户活动,例如登录和注销、在频道间切换、加入会议等,并将事件发送到频道。接收者的应用程序解析事件并呈现发送者的状态为“在线”,“闲置”或“忙碌”。应用程序还会定期检查最后接收到的事件的时间,并在超过指定时间间隔未收到新信号时,将发送者标记为“离线”。javascriptawait sendChannelMessage({ Content PAutoOnline Type CONTROL Persistence NONPERSISTENT LastUpdatedTimestamp 20211026T024911096Z })
自定义存在状态
通过自定义存在状态,用户可以在频道中设置所需的状态,例如“在家工作”或“我在夏威夷”。
自定义存在状态被持久化,以支持按需检索频道中成员的存在信息,这通过使用频道流和频道元数据来处理和存储实现。
在演示代码中:
我们创建一个频道流,并将其与频道关联,以处理自定义存在消息。我们还创建一个 AWS Lambda 函数,以处理频道流事件并更新频道元数据中的自定义状态。然后,使用 sendChannelMessage API 结合 STANDARD 消息类型发布自定义存在更改。javascriptawait sendChannelMessage({ Content changed status to In Hawaii! Type STANDARD Persistence PERSISTENT Metadata JSONstringify({IsPresenceInfo true Status CIn Hawaii!}) })
一元机场配置url请注意,元数据存储有 1KB 的限制,因此该方法仅应在成员少于 10 个的小频道中使用。
打字指示器
打字指示器是一种常见功能,提供附加状态,允许用户看到某人在聊天频道中是否正在输入消息。
演示应用程序利用控制消息在频道中实现打字指示器。使用 Amazon Chime SDK 消息 的 sendChannelMessage API,应用程序在成员开始输入消息时在频道内传送信号。
高层架构
在客户端应用程序中,存在一个事件侦听器,以检测用户输入消息并发起 API 调用来发送打字指示器信号到频道。建议使用去抖动函数以限制 API 调用的频率,同时提升客户端应用程序的性能。
javascriptdebounce(()=gt{ sendChannelMessage({ Content JSONstringify({Typing Indicator}) Type CONTROL Persistence NONPERSISTENT LastUpdatedTimestamp 20211026T024911096Z })} 500)
前提条件
了解消息类型 Amazon Chime SDK 消息 当前支持两种类型的消息,CONTROL 和 STANDARD。标准消息较大,通常用于发送聊天消息。控制消息体积较小,发送成本更低。控制消息通常用于打字指示器、反应和投票等信令用例。您也可以使用控制消息在消息应用程序中发送和接收短消息,以构建如存在感和用户状态等功能。有关定价的更多信息,请参见 Amazon Chime SDK 定价 页面。

了解 消息频道流。
运行此演示的其他前提条件:
一个 AWS 账户 并且有 管理员权限。开发经验及熟悉 JavaScript。在您的工作区中安装 AWS 命令行接口 (AWS CLI) 和 NPM。演示应用程序
使用 Amazon Chime SDK 聊天演示应用程序,您可以快速体验各种消息功能,例如创建频道和添加成员、发送和接收消息,以及在频道中启动和加入会议。为了展示如何在消息应用中构建存在感和打字指示器功能,这个聊天演示应用的代码已有更新。
此演示包含以下主要组件:
使用 AWS CloudFormation 模板来:设置身份验证层,选择使用 Amazon Cognito 或 AWS 安全令牌服务 (AWS STS) 来提供用户凭证,结合 身份验证后 Lambda 函数。引导演示应用程序资源,包括 Chime SDK 应用实例和频道流处理的 AWS Lambda 函数。
使用 React 框架 创建的聊天演示客户端应用程序,结合 Amazon Chime SDK JavaScript 客户端库 和 AWS Amplify JavaScript 库。
部署演示应用程序
步骤 1 创建 AWS 资源
使用您的主账户登录 AWS 管理控制台,切换至 useast1 (N Virginia) 区域。注意:本节中的 AWS CloudFormation 模板需在美国东部 (N Virginia) 区域启动。
前往 AWS CloudFormation 创建堆栈 页面,选择 上传模板文件,并上传 templateyaml 文件,然后点击 下一步。
在 指定详细信息 页面中,输入堆栈名称:ChimeSDKMessagingDemo,并输入 DemoName ChimeSDKMessagingDemo。然后点击 下一步。
在 配置堆栈选项 页面,点击 下一步。
在 查看 页面,勾选 我确认 AWS CloudFormation 可能创建 IAM 资源 复选框,然后点击 创建。
创建堆栈后,导出输出,其中包括 apiGatewayInvokeUrl、appInstanceArn、attachmentsS3BucketName、cognitoAppClientId、cognitoIdentityPoolId 和 cognitoUserPoolId。记下这些值,以便在下一步进行演示应用程序配置。
步骤 2 在本地部署聊天演示应用
在此步骤中,您将部署一个简单的网络应用,该应用是使用 React 框架编写的,演示 Amazon Chime SDK 消息功能。完成本地应用程序设置后,您可以开始使用。
从 GitHub 克隆项目。bashgit clone https//githubcom/awssamples/amazonchimesdkgit
运行以下命令以导航到 Amazon Chime SDK 聊天演示的根文件夹:bashcd amazonchimesdk/apps/chat
运行以下命令以安装 Amazon Chime SDK 聊天演示的所有依赖项:bashnpm install
使用您选择的编辑器打开 src/Configjs。将以下配置添加到其中,并更新值为从 AWS CloudFormation 堆栈中获取的输出:
完成应用程序配置后,运行以下命令以在 amazonchimesdk/apps/chat 文件夹中设置前端服务器。bashnpm start
打开浏览器并访问 https//localhost9000 开始测试。
步骤 3 探索聊天演示应用
在主页中,您可以选择为聊天应用注册用户。输入用户名和密码,然后选择 注册 按钮。
在用户注册期间,用户在您在步骤 2 中设置的安全 Amazon Cognito 目录中创建。然而,在注册后,该用户处于未确认状态。
为了确认用户,请转到 用户池,点击用户名并选择 确认 用户。
用户确认后,返回登录界面并点击 登录 按钮。再次点击 登录 按钮。
然后,您将进入聊天演示应用的主页,开始探索功能。
步骤 4 体验自动频道存在状态
创建新频道,或打开现有频道。
打开一个单独的浏览器并作为第二个用户加入相同的频道。注意两个用户的频道存在状态均为“在线”。注意:存在状态的变化会在指定的时间间隔内定期发布即在演示应用中为 10 到 20 秒,因此如果您没有立即看到状态更新,请耐心等待。
创建另一个频道并打开它。这样用户在第一个频道中变为非活跃状态。注意第一个频道中用户的存在状态现在更改为“闲置”。
在第一个频道中开始并加入会议。注意第一个频道中用户的存在状态已更改为“忙碌”。
注销其中一位用户,或简单地关闭浏览器标签。注意他们的存在状态已更改为“离线”。
步骤 5 体验“在家工作”的持久状态
重新登录并打开之前创建的频道。
打开一个单独的浏览器,并作为第二个用户加入相同的频道。
为您创建的频道启用“存在频道流”。
打开一个用户的频道菜单并将他们的状态更改为“在家工作”。
注意该用户的频道成员存在状态现在更新为“在家工作”。
注销相同用户,或简单关闭他们的浏览器标签。注意他们在频道中的存在状态未发生变化。
步骤 6 设置您自己的自定义持久状态
重新登录并打开您之前创建的频道。
打开一个单独的浏览器,并作为第二个用户加入相同的频道。
打开一个用户的频道菜单并将状态更改为 自定义。
注意该用户的频道存在状态更新为提供的自定义状态。
注销相同用户,或简单关闭他们的浏览器标签。注意他们的存在状态未发生变化。
步骤 7 体验打字指示器功能
重新登录并打开您之前创建的频道。
打开一个单独的浏览器,并作为第二个用户加入相同的频道。
作为第一个用户,在频道中尝试输入消息。
注意第二个用户看到打字指示器。
清理
如果您不希望继续为使用聊天演示应用程序而产生费用,您可以通过删除 AWS CloudFormation 堆栈和在步骤 1 中创建的资源来进行清理。
要删除堆栈及其资源:
在您在步骤 1 中使用的区域中的 AWS CloudFormation 控制台中,选择您创建的堆栈。
点击 删除堆栈。
在出现的确认消息中,点击 是,删除。此时,您更改的状态将变为 DELETEINPROGRESS。以与您监控堆栈创建相同的方式,通过使用事件选项卡监控其删除。当 AWS CloudFormation 完成堆栈的删除时,会将其从列表中移除。
最后,使用以下 CLI 命令删除步骤 1 中创建的 Amazon Chime 应用实例:bashaws chime deleteappinstance appinstancearn ltARN FROM STEP 1gt
结论
在本博客中,您学习了如何利用 Amazon Chime SDK 消息 的功能在您的消息应用程序中构建存在状态和打字指示器功能。要开始使用 Amazon Chime SDK 消息,请阅读我们的 开发者指南。
如需了解更多信息,请参见下表:
标签链接Amazon Chime SDK聊天通话通信开发服务[CPaaS](https//awsamazoncom/blogs