iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Software Development

從無到有,LINE著不走系列 第 25

Day 25: 優化 Line Bot 的個性化互動

  • 分享至 

  • xImage
  •  

在第 25 天,我們將重點放在如何通過個性化的交互來提高用戶體驗。個性化的 Bot 可以根據用戶的行為和喜好提供定制化的回應,這不僅可以讓用戶感到被重視,也能增加 Bot 的實用性和黏性。

步驟 1:了解用戶偏好

  1. 收集用戶數據

    • 通過和用戶的互動來收集有價值的數據,例如他們的喜好、使用習慣和歷史查詢。你可以根據這些數據來判斷他們的興趣點,並記錄到資料庫中。
    • 可以使用 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="已記住您喜歡的科技新聞"))
    
  2. 設置偏好選項

    • 讓用戶選擇自己的偏好,這樣 Bot 可以根據用戶的選擇進行更具針對性的推送。例如,詢問用戶他們對哪些類型的新聞感興趣,然後根據他們的選擇進行推薦。
    @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)
            )
    

步驟 2:根據用戶歷史進行推送

  1. 自動推送相關內容

    • 根據用戶的歷史交互記錄,定期推送他們可能感興趣的內容。例如,如果某個用戶經常查詢天氣信息,可以在特定的時間段(如早上)自動推送當地天氣。
    • 使用 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)
    
  2. 基於上下文的回應

    • 根據用戶的歷史查詢來給出更具上下文相關的回應。例如,當用戶查詢過某城市的天氣後,下一次再詢問“今天呢?”時,Bot 應該自動理解並返回之前查詢過的城市的天氣。
    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="請先告訴我您想查詢哪個城市的天氣。"))
    

步驟 3:動態調整互動方式

  1. 根據使用習慣調整回應風格

    • 如果某些用戶偏好簡短而快速的回應,可以根據記錄的用戶互動習慣自動調整回應方式。例如,對於偏好簡短信息的用戶,Bot 可以避免長篇大論的回答,提供更簡潔的回應。
    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 助手。您可以詢問我有關天氣、新聞等信息,讓我來幫助您。"))
    
  2. 記錄互動頻率,進行個性化調整

    • 根據用戶的互動頻率決定提醒次數。例如,對於較少互動的用戶,可以增加提醒次數或調整提醒內容,以吸引他們繼續使用。
    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="看起來您對查詢天氣非常感興趣!試試查詢新聞吧,也許有新的驚喜!")
            )
    

步驟 4:提升回應的情感化

  1. 加入對用戶的關懷

    • Bot 可以在特定節假日或重要事件時主動對用戶表達關懷,例如在新年時發送祝福,或者在雨天提醒帶傘。
    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="新年快樂!祝您新年一切順利!🎉"))
    
  2. 使用更有溫度的語言

    • 在回應中使用更具情感的語言,讓用戶感受到溫暖。例如,當用戶查詢天氣時,可以加入個人化的關懷語句。
    @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。記得多喝水,保持身體健康!")
            )
    

上一篇
Day 24: 優化 Line Bot 的用戶體驗
下一篇
Day 26: 提升 Line Bot 的性能
系列文
從無到有,LINE著不走30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言