如果使用者取消了訂閱,那系統會自動恢復預設(科技新聞),根據剛剛「取消訂閱的節點」程式碼,我們要做一點更動,更改完的程式碼如下:
const userId = $input.first().json.body.events[0].source.userId;
const staticData = $getWorkflowStaticData('global');
let replyMessage;
// 檢查 subscriptions 物件是否存在,如果不存在就回覆沒有訂閱
if (!staticData.subscriptions) {
staticData.subscriptions = {};
replyMessage = '您沒有訂閱任何新聞。';
} else {
// 取得使用者當前的訂閱主題
const topic = staticData.subscriptions[userId];
if (topic && topic !== '科技') {
// 將主題恢復為預設的「科技」
staticData.subscriptions[userId] = '科技';
replyMessage = `已成功取消訂閱${topic}新聞,並恢復為「科技」新聞。`;
} else {
// 如果沒有訂閱任何主題,或主題已經是「科技」,就直接回覆
staticData.subscriptions[userId] = '科技';
replyMessage = '您沒有訂閱任何新聞,已設定為「科技」新聞。';
}
}
return [{
json: {
replyToken: $input.first().json.body.events[0].replyToken,
messages: [{
type: "text",
text: replyMessage
}]
}
}];
現在的功能比單純的刪除訂閱更複雜,包含了多種情境的判斷。
HTTP Request
節點傳訊息給使用者在工作流尾端新增一個 HTTP Request
節點,並把剛剛做的兩個節點和這個節點連接起來。
前面的欄位都和昨天的 HTTP Request
節點一樣,請直接去把昨天的內容複製到相對應的欄位~
唯一不一樣的地方是:
{{ $json }}
Code
節點)傳給整個 JSON 物件,當作 Body 的內容傳送出去。目前的工作流長這樣:
今天的任務完成了!目前已經可以成功和 LINE Bot 互動,我有幾點要提醒一下:
明天(Day 16)會用到 Google Sheet 來記錄使用者訂閱主題,並加上其他主題的 RSS 來源。