📜  rasa slack 集成 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:04:47.706000             🧑  作者: Mango

Rasa Slack集成 - Shell/Bash

简介

Rasa是一款流行的开源聊天机器人框架,而Slack是一款广泛使用的实时通讯工具。这个集成将帮助你在Slack上使用你的Rasa聊天机器人。

要求

在你开始此集成之前,请确保你已经完成以下任务:

  1. 拥有一个可用的Rasa聊天机器人
  2. 安装了Slack的API凭证
步骤

以下步骤将引导你完成Rasa和Slack的集成过程:

  1. 打开你的终端并输入如下命令来安装slackclient模块:
pip install slackclient
  1. 配置你的Slack API凭证

在你的Slack工作区中创建一个新的应用程序,并为它配置API凭证。确保在oauth scopes选项卡中勾选Bot Token Scopeschat:write范围。

  1. 创建Slack的机器人用户

同样在你的Slack工作区中,创建一个新的机器人用户,并将它添加到你的Rasa聊天机器人中。

  1. 编写Shell/Bash脚本

在你的终端中创建一个新的Shell/Bash脚本,并将下面的代码粘贴到脚本中:

#!/bin/bash

# Slack Bot token
SLACK_BOT_TOKEN="YOUR_BOT_TOKEN_HERE"

# Rasa endpoint URL
RASA_ENDPOINT_URL="http://localhost:5005/webhooks/rest/webhook"

# Slack channel to send bot response 
SLACK_CHANNEL="#general"

while true; do
    # Read incoming user messages
    MESSAGE=$(curl -s -X GET -H "Content-type: application/json" -H "Authorization: Bearer ${SLACK_BOT_TOKEN}" "https://slack.com/api/conversations.history?channel=${SLACK_CHANNEL}&limit=1")
    NEW_MESSAGE=$(echo $MESSAGE | jq '.messages[0].text' | sed 's/"//g')
    
    if [[ $NEW_MESSAGE != "null" && $NEW_MESSAGE != $CURRENT_MESSAGE ]]; then
        # If there is a new message, send it to Rasa for processing
        RASA_RESPONSE=$(curl -s -X POST -H "Content-type: application/json" -d "{\"sender\": \"user\", \"message\": \"$NEW_MESSAGE\"}" $RASA_ENDPOINT_URL)

        # Extract bot response from Rasa's response
        BOT_RESPONSE=$(echo $RASA_RESPONSE | jq '.[0].text' | sed 's/"//g' | sed -e 's/^[[:space:]]*//')
        
        # Send bot response to Slack
        BOT_RESPONSE_ENCODE=$(echo $BOT_RESPONSE | sed 's/\\\\/\\/g')
        curl -s -X POST -H "Content-type: application/json" -H "Authorization: Bearer ${SLACK_BOT_TOKEN}" -d "{\"channel\": \"${SLACK_CHANNEL}\", \"text\": \"${BOT_RESPONSE_ENCODE}\"}" "https://slack.com/api/chat.postMessage"
        
        # Update current message
        CURRENT_MESSAGE=$NEW_MESSAGE
    fi
    # Sleep for 1 second
    sleep 1
done
  1. 配置脚本变量

在脚本中,将SLACK_BOT_TOKEN变量的值设置为你的Slack机器人用户的token。将RASA_ENDPOINT_URL变量的值设置为你的Rasa聊天机器人的URL地址。将SLACK_CHANNEL变量的值设置为你希望机器人将回应发送到的Slack频道的名称。

  1. 运行脚本

在你的终端中运行脚本:

$ bash rasa_slack_integration.sh

现在,你就可以在Slack上与你的Rasa聊天机器人交互了!

结论

通过这个集成,你可以将你的Rasa聊天机器人嵌入到Slack中,以便更方便地与你的团队成员进行交流和合作。这个用例可以应用在许多场景中,如自动化帮助台服务、自助问题解决、知识库搜索等等。