How can I react to a message with a pub/sub bot

别说谁变了你拦得住时间么 提交于 2020-02-24 16:47:08

问题


I have created a Card with a button and a onClick action that successfully sends a message to my client with type "CARD_CLICKED". When I try to respond to this message with either a type "NEW_MESSAGE" or "UPDATE_MESSAGE" message, this is displayed as a new message, while the API tries for three times to send that CARD_CLICKED event to my bot until it gives up with the visual error: "Unable to contact [bot]. Try again later."

I guess this is similar to

  • Interactive button doesn't work properly when using pub/sub
  • Interactive cards hangout chat Api

but I am using a golang client and the answer to these questions didn't help me...

My code to respond to the "CARD_CLICKED" message:

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
}

My code is based on this project: https://github.com/jforman/hangbot


回答1:


Found out what the main issue was... I was calling the .Create() function - which created a new message and thus - even though the Action Response was set correctly - this was not interpreted as a response to the click event: https://github.com/jforman/hangbot/blob/master/hangbot.go#L79

After I switched to calling .Update() - Chat would not display the "Unable to contact" message about my bot any more.

What remains is that the click event is still sent to me three times, but I'm filtering events now based on the eventTime, which works ok for now.



来源:https://stackoverflow.com/questions/54557076/how-can-i-react-to-a-message-with-a-pub-sub-bot

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!