2017-10-06 68 views
4

我試圖建立在Python鬆弛機器人。我想讓我的機器人發送帶有交互按鈕的消息,然後基於用戶點擊它,在Python中運行一個函數。我似乎沒有找到如何做到這一點。鬆弛BOT,註冊點擊消息按鈕

我的代碼現在看起來是這樣的:

message = "message" 
attachments = [{"text": "message", 
       "attachment_type": "default", 
       "actions": [ 
        { 
         "name": "list", 
         "text": "message", 
         "type": "select", 
         "options": [ 
         { 
          "name": "1", 
          "text": "1", 
          "type": "button", 
          "value": "1" 
         }, 
         { 
          "name": "1", 
          "text": "1", 
          "type": "button", 
          "value": "2" 
         } 
        ]}]}] 

sc.api_call("chat.postMessage", 
      channel=channel, 
      text=message, 
      attachments=attachments) 

所以這給了我兩個按鈕的消息。然而,我想根據用戶給出的答案來運行一個函數。

所以說,如果他們點擊1,功能1()運行,當他們點擊2,函數2()運行。

的鬆弛API文檔是相當混亂有關如何做到這一點,和「聽衆」,他們提供rtm_read()不會在用戶點擊挑上的一個按鈕。

所以,如果有人能幫助我,這將是大加讚賞。

回答

4

當你在鬆弛交談點擊一個按鈕,它基本上將回調。回調發送到您在應用程序設置中定義的某個位置,然後THAT服務決定接下來要處理的信息。

  1. 首先你需要create a new Slack App

  2. 創建後,點擊應用程序,進入其基本信息頁面。

  3. 從那裏,在左側功能找到「交互式組件」。

  4. 註冊的這兩個網址將從單擊按鈕接收POST數據。

  5. 解釋數據並進行:)

從放鬆的文檔,你可以找到他們的演練here

你將需要一個運行的Web服務器,在Flask簡單的工作將會很好。

from flask import Flask, request 

app = Flask('SlackReceiver') 


@app.route('/slack/message', methods=['POST']) 
def incoming_slack_message(): 
    req = request.get_json() 
    # .. do something with the req .. 
    return 'action successful' 


@app.route('/slack/options', methods=['POST', 'OPTIONS']) 
def incoming_slack_options(): 
    # .. idk .. 
    return 'ok' 


if __name__ == '__main__': 
    app.run('0.0.0.0', 8088, debug=False) 

...

最後,根據文檔,你需要用配置的HTTPS有效證書的web服務器上託管該應用程序。設置服務器超出了這個問題的範圍,獲得免費(有效)HTTPS證書的最簡單方法是使用Let's Encrypt和certbot

+0

Aaah,這解釋了很多。非常感謝! – tcas