如何在用户连接Twilio Sandbox后让聊天机器人发送首条自动消息
功能实现方案
你当前代码已经预留了欢迎语的匹配逻辑,只需要调整判断逻辑的优先级,即可实现首次连接自动发送操作指引的需求,修改后的完整代码如下:
class Twilio::MessagesController < ApplicationController skip_before_action :verify_authenticity_token def create body = params['Body'] spotify = Spotify.new(ENV['SPOTIFY_USER_ID'], ENV['SPOTIFY_TOKEN'], ENV['SPOTIFY_REFRESH_TOKEN']) message = nil # 首次会话/打招呼触发引导消息,优先级最高 greetings = ['oi', 'olá', 'ola', '.', 'hi', 'hey', 'eae', 'eai', 'salve'] if !session[:track] && greetings.include?(body.strip.downcase) message = "请输入歌曲名加歌手名即可添加到播放列表,示例:Bad Michael Jackson" end if session[:track] answer = body.split(' ').first.downcase.strip confirm_keywords = ['yes', 'yeah', 'yep', 'yup', '👍', '👍🏻', '👍🏼', '👍🏿', '👍🏽', '👍🏾', 'sim', 's', 'ss', 'com certeza', 'claro'] if confirm_keywords.include? answer message = "好的,正在将歌曲添加到播放列表,播放列表地址:https://open.spotify.com/playlist/7qdUS3dh2mQy65DTfHlZiP?si=3b866e7162b44aa0" spotify.add_to_playlist(ENV['SPOTIFY_PLAYLIST_ID'], session[:track]) session[:track] = nil elsif ['no', 'nah', 'nope', '👎', ' 👎🏻', '👎🏼', '👎🏽', '👎🏾', '👎🏿', 'não', 'n', 'nn', 'de jeito nenhum', 'nah', 'nem', 'sai fora'].include? answer session[:track] = nil message = "你想添加哪首歌曲?" end end if !message track = spotify.track_search(body) if track session[:track] = track.uri message = "你要添加的是#{track.artists.map(&:name).to_sentence}的《#{track.name}》吗?" else message = "没有搜索到和'#{body}'相关的歌曲,请换个关键词重试。" end end response = Twilio::TwiML::MessagingResponse.new response.message(body: message) render xml: response.to_xml end end
修改说明
- 将欢迎语判断放到逻辑最上层,优先级最高,用户首次发送打招呼类消息时会直接返回操作指引
- 保留原有全部歌曲搜索、确认、添加的逻辑,不会影响已上线功能的正常运行
- 支持多语言打招呼关键词,适配不同用户的使用习惯
内容的提问来源于stack exchange,提问作者Rafael de Oliveira Silva
相关产品推荐
相关产品推荐

