ChatWoot服务
- 官方文档
-
部署完成应该有三个服务 chatwoot、 postgres、redis
- 创建一个website inbox
Ruby 服务(处理机器人消息)
- clone repo 到本地 github:https://github.com/chatwoot/dialogflow-agent-bot-demo
- 拷贝项目根目录 .env.example 文件为 .env 并配置几个重要环境变量
CHATWOOT_URL # chatwoot 服务地址 确保能curl成功 成功访问
AGENT_BOT_TOKEN # 机器人Token 用于与chatwoot机器人通信
DIALOGFLOW_CREDENTIALS # dialogflow json文件
DIALOGFLOW_PROJECT_ID #dialogflow project id
REDIS_URL=redis://localhost:6379 # 数据库地址
- 检查项目Ruby 版本
检查当前系统ruby版本是否与项目匹配 ruby -v
查看Gemfile文件 ex: ruby '3.2.2' gem 'rails', '~> 7.0.8.4'
bundle install 更新项目ruby相关依赖
- 项目根目录执行 rails命令启rb服务
不指定ip rails s -p 4000
指定ip并且常驻后台 nohup rails s -b 0.0.0.0 -p 4000 &
创建机器人
1.Docker 环境要先执行 docker exec -it root-rails-1 sh
2.进入chatwoot 代码根目录 启动 rails 控制台 bundle exec rails c -e production (-e production 指定生产环境)
# 创建机器人 name 机器人名字 outgoing_url 处理机器人消息的rb服务 ,事实上就是一个webhook 会以post请求发给rb服务
3.bot = AgentBot.create!(name: "Your Bot", outgoing_url: "http://localhost:4000")
# 查看机器人token
4.bot.access_token.token
# 将机器人与inbox关联
5.AgentBotInbox.create!(inbox: Inbox.first, agent_bot: bot)
其他相关API
删除机器人和删除inbox 在chatwoot后台无法删除,故给出API方案
删除机器人
# 获取 AgentBot 实例
agent_bot = AgentBot.find(1) # 1 是创建的时候生成的id
agent_bot.destroy
删除inbox
# 获取 Inbox 实例
inbox = Inbox.find(1)
inbox.destroy
启动SideKip服务
在Super Admin Console 中有一个 Sidekiq Dashboard
观察队列数据是否正常,如果一直没有被消费 则需要启动sidekip服务
bundle exec sidekiq
Dialogflow配置
其他一些命令记录
#登入服务器
ssh root@chatwook.xiaoyi.com
# 查看当前所有服务进程
netstat -tnlp
#查看容器&日志
docker ps
docker logs -f root-rails-1
#查看系统日志
tail -100f /var/log/syslog
# 查看rb服务日志
cat logs/development.log
# rb 打印日志到 log
Rails.logger.info "进入请求 #{var}"