在第 25 天,我們將重點放在如何通過個性化的交互來提高用戶體驗。個性化的 Bot 可以根據用戶的行為和喜好提供定制化的回應,這不僅可以讓用戶感到被重視,也能增加 Bot 的實用性和黏性。
收集用戶數據:
user_id
來識別用戶並保存每位用戶的偏好。user_preferences = {}
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
user_id = event.source.user_id
if user_id not in user_preferences:
user_preferences[user_id] = {"language": "zh", "topics": []}
# 根據用戶輸入更新偏好
if event.message.text == "我喜歡科技新聞":
user_preferences[user_id]["topics"].append("科技")
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="已記住您喜歡的科技新聞"))
設置偏好選項:
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
if event.message.text == "設置偏好":
quick_reply_buttons = QuickReply(items=[
QuickReplyButton(action=MessageAction(label="科技", text="我喜歡科技新聞")),
QuickReplyButton(action=MessageAction(label="體育", text="我喜歡體育新聞")),
QuickReplyButton(action=MessageAction(label="娛樂", text="我喜歡娛樂新聞"))
])
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="請選擇您感興趣的新聞類型:", quick_reply=quick_reply_buttons)
)
自動推送相關內容:
schedule
庫可以實現簡單的定時推送。import schedule
import time
def send_weather_update():
for user_id in user_preferences:
if "天氣" in user_preferences[user_id]["topics"]:
# 進行天氣推送
line_bot_api.push_message(user_id, TextSendMessage(text="早上好!這是您今天的天氣預報 ☀️"))
# 每天早上8點推送天氣信息
schedule.every().day.at("08:00").do(send_weather_update)
while True:
schedule.run_pending()
time.sleep(1)
基於上下文的回應:
user_context = {}
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
user_id = event.source.user_id
user_message = event.message.text
if user_message.startswith("查詢天氣"):
city = user_message.replace("查詢天氣", "").strip()
user_context[user_id] = {"last_query": city}
# 查詢天氣邏輯...
line_bot_api.reply_message(event.reply_token, TextSendMessage(text=f"{city} 的天氣是晴天,25°C"))
elif user_message == "今天呢?":
if user_id in user_context and "last_query" in user_context[user_id]:
city = user_context[user_id]["last_query"]
# 再次查詢天氣
line_bot_api.reply_message(event.reply_token, TextSendMessage(text=f"{city} 今天的天氣是晴天,28°C"))
else:
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="請先告訴我您想查詢哪個城市的天氣。"))
根據使用習慣調整回應風格:
user_preferences = {}
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
user_id = event.source.user_id
user_message = event.message.text
if user_id not in user_preferences:
user_preferences[user_id] = {"style": "簡短"}
if user_message == "幫助":
if user_preferences[user_id]["style"] == "簡短":
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="您可以查詢天氣、新聞等。"))
else:
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="您好,我是您的 Line Bot 助手。您可以詢問我有關天氣、新聞等信息,讓我來幫助您。"))
記錄互動頻率,進行個性化調整:
interaction_count = {}
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
user_id = event.source.user_id
if user_id not in interaction_count:
interaction_count[user_id] = 0
interaction_count[user_id] += 1
if interaction_count[user_id] > 5:
# 提示一些有趣的功能吸引用戶
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="看起來您對查詢天氣非常感興趣!試試查詢新聞吧,也許有新的驚喜!")
)
加入對用戶的關懷:
from datetime import datetime
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
today = datetime.now().strftime('%m-%d')
if today == "12-31":
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="新年快樂!祝您新年一切順利!🎉"))
使用更有溫度的語言:
@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
if event.message.text == "查詢天氣":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="今日天氣 ☀️:晴朗,溫度 25°C。記得多喝水,保持身體健康!")
)