2016-06-08 58 views
0

我正在使用Slack RTM node client和DM有點問題。假設用戶加入之前從未對機器人進行過DM的頻道,則用戶在機器人通常會響應的頻道中輸入一條命令,默認情況下,機器人會以私人消息的形式回覆用戶。但是,bot不能這樣做,因爲dataStore不包含此用戶的任何DM數據。下面的代碼示例...消息用戶一個機器人不知道

rtm.on(RTM_EVENTS.MESSAGE, function (message) { 
    user = rtm.getUserById(message.user); 
    console.log(user); // It gets the user object fine 
    dm = rtm.getDMByName(user.name); 
    console.log(dm); // This is always undefined unless the user has DM'ed the bot previously 
}); 

有沒有辦法解決這個問題?我似乎無法找到文檔或代碼中的任何內容來暗示可能存在。

回答

1

您可以使用web API的im.open方法。這裏有大約你會如何與@鬆弛/客戶端做(未經測試,提前道歉!):

var webClient = new WebClient(token); 
... 
rtm.on(RTM_EVENTS.MESSAGE, function (message) { 
    var dm = rtm.getDMById(message.user); 
    if (dm) { 
    console.log(`Already open IM: ${dm}`); 
    // send a message or whatever you want to do here 
    } else { 
    webClient.im.open(message.user, function (err, result) { 
     var dm = result.channel.id; 
     console.log(`Newly opened IM: ${dm}`); 
     // send a message or whatever you want to do here 
    }); 
    } 
}); 
+0

我沒想到做一些與Web客戶端,使這項工作,但從來沒有真正嘗試過,我會給這明天去吧。感謝您的回覆 – Catharsis

+0

嘿只是想說,認爲,這確實工作,因爲我懷疑,對不起它花了我一段時間來測試它,並得到你,有一個蜱和upvote :) – Catharsis

相關問題