EFB 工作原理

EH Forwarder Bot 是一个可扩展的框架,允许用户使用统一的接口来控制和管理不同聊天平台的账户。它包含四个部分:一个主端,一些从端,一些中间件和一个协调器。

EFB Project Structure
主端

直接和用户交互的信道。在 EFB 配置中保证有且只有一个主端。

从端

向相关平台发送和接收消息的信道。一个 EFB 会话中有至少一个从端。

协调器

框架中用来维护信道实例的组件,同时负责在信道间传递消息。

中间件

用来在信道间处理消息及状态的组件,同时会在需要时做出相应的修改。

需要了解的概念

组件

信道和中间件的通称。

用户
用户自己

此术语1可以指 EH Forwarder Bot 当前实例的用户。「用户」可以在主端和登录的 IM 平台的帐户的从端。

会话

对话发生的地方,可以是 :term:」私下聊天」 , :term:」群聊」 或是 :term:」系统聊天」。

私聊会话

在即时通讯平台上与单人进行的对话。 私密对话的消息的作者只能是 :term:“用户本人” 、其他人或是“系统成员”。

对于支持机器人或者类似功能的平台,它们也应该被看作为一个「用户」,除非机器人不能发送消息。

用户只能接收而不能发送消息的会话也应该被视为一个「用户会话」,且应当在向这些会话发送消息时抛出异常。

群组会话

涉及多个用户的会话。群聊必须(MUST)提供一个可以参与对话的成员列表。

系统会话

作为系统构成部分的会话。通常用于即时通讯平台、从端中间件生成的系统会话。从端可以使用这个功能来向主端发送系统消息和通知。

会话成员

会话的参与者。可以是用户自己、会话中的其他人或机器人、也可以是由 IM 平台、从端或:term:`中间件`创建的虚拟参与者。

消息

消息只能在主端与从端之间传递。它通常包含特定类型的信息。

每个消息都至少含有一个在该从端内的唯一 ID。任何编辑过的消息应该可以通过相同的唯一 ID 被识别。

状态

不能包装为消息的其他信息。通常包含聊天和聊天成员的更新,以及消息的删除。

从端

从端的工作相对简单。

  1. 传递来往于主端的消息。

  2. 维护所有可用会话和群组成员的列表。

  3. 监视会话信息的变更并通知主端。

在标准的 EFB 从端模型外的附加功能可以通过 附加功能 来提供。

主端

主端相对来说更加复杂同时也更灵活。由于它直接面向用户,它的界面应该对用户友好,至少对于目标用户友好。

主端的工作包括:

  1. 接收,处理和显示来自从端的消息。

  2. 显示来自所有从端的完整会话列表。

  3. 提供一个让用户使用来自从端的「附加功能」的界面。

  4. 处理来自从端的更新。

  5. 尽可能提供一个用户友好的界面。

中间件

中间件可以监视,更改或拦截在通道间传递的消息和状态。中间件按照注册的顺序一个接一个的执行。 如果存在,中间件会始终接受被上一个中间件处理过的消息。一旦中间件拦截了消息或状态,该消息将不再被进一步处理。

脚注

1

英语原文使用的「自己」(themself)在这里表示一种中性的单数第三人代词。中文翻译中使用「用户自己」代替。