Mixin 机器人如何获得用户ID和会话ID

能够获悉用户ID和会话ID的两个交互场景和方法:

  1. 等待用户主动发消息给机器人
    当用户在 Mixin Messenger 中 添加机器人为联系人时,会自动的发送一条内容是 “Hi”(“你好”) 的文本消息给机器人。
  2. 机器人收到来自用户的消息时,可以从 message view 里读到 user_id 和 conversation_id.
    代码参考
  3. 如果需要更多用户信息,可以通过 API GET /user/:id 接口读取。
  1. 网页版中,可以使用 Mixin 的 JavaScript Bridge 读取到当前用户的 conversation_iduser_id
  2. 当用户确认 OAuth 授权后,机器人可以使用用户的 access token 通过 GET /me 接口获得更多信息。

用户/群组可以访问网页 https://mixin.one/context 直接查看自己的会话ID。

Mixin 机器人如何群发消息给用户

若需要给每个用户逐一发送消息(群发消息),就是发送消息到每个会话ID (Conversation ID)。而这份会话ID列表需要自己提前准备好,参考 Mixin 机器人如何获得用户ID和会话ID,然后自行存储和管理。

Mixin 的会话 ID 形式相同,但生成方法分两种:
1. 用户和用户之间的单人会话,可以通过计算两个用户的 user_id 获得。计算方法参考代码
2. 多人群组的会话ID是随机生成的。

Linux systemd unit 配置文件

基础概念可参考阮一峰写的 Systemd 定时器教程

[Service]区块用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。它的主要字段如下。

  • Type:定义启动时的进程行为。它有以下几种值。
  • Type=simple:默认值,执行ExecStart指定的命令,启动主进程
  • Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
  • Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
  • Type=dbus:当前服务通过D-Bus启动
  • Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
  • Type=idle:若有其他任务执行完毕,当前服务才会运行
  • ExecStart:启动当前服务的命令
  • ExecStartPre:启动当前服务之前执行的命令
  • ExecStartPost:启动当前服务之后执行的命令
  • ExecReload:重启当前服务时执行的命令
  • ExecStop:停止当前服务时执行的命令
  • ExecStopPost:停止当其服务之后执行的命令
  • RestartSec:自动重启当前服务间隔的秒数
  • Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-successon-failureon-abnormalon-aborton-watchdog
  • TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
  • Environment:指定环境变量

Unit 配置文件的完整字段清单,请参考官方文档