如何使用发布/订阅漫游器对消息做出反应

时间:2019-02-06 15:27:35

标签: hangouts-chat

我创建了一个带有按钮和onClick操作的卡,该卡成功将消息发送给我的客户端,类型为“ CARD_CLICKED”。 当我尝试使用“ NEW_MESSAGE”或“ UPDATE_MESSAGE”消息类型来对此消息进行响应时,该消息将显示为新消息,而API会尝试三次将该CARD_CLICKED事件发送给我的机器人,直到它放弃了视觉错误:“无法联系[bot]。请稍后再试。”

我想这类似于

但是我正在使用golang客户端,这些问题的答案对我没有帮助...

我的代码以响应“ CARD_CLICKED”消息:

func handleClick(message *chat.DeprecatedEvent) *chat.Message {
    log.Debugf("User %s instructed me to execute %s", message.User.DisplayName, message.Action.ActionMethodName)

    response := &chat.Message{
        ActionResponse: &chat.ActionResponse{Type: "UPDATE_MESSAGE"},
        Thread:         &chat.Thread{Name: message.Message.Thread.Name},
        Space:          &chat.Space{Name: message.Message.Space.Name, Type: message.Message.Space.Type},
        Text:           "CARD CLICKED!",
    }
    return response
}

我的代码基于以下项目:https://github.com/jforman/hangbot

1 个答案:

答案 0 :(得分:1)

找出了主要问题是什么...我正在调用.Create()函数-它创建了一条新消息,因此-即使正确设置了动作响应-也不会将其解释为对点击的响应事件: https://github.com/jforman/hangbot/blob/master/hangbot.go#L79

切换到.Update()后,聊天不再显示关于我的机器人的“无法联系”消息。

剩下的是,单击事件是 still 发送给我的三次,但是我现在根据eventTime过滤事件,目前可以正常使用。