2017-06-07 23 views
2

機器人模擬器正常工作與明文響應,但當我嘗試通過Skype做同樣的機器人響應;如何更改機器人/ Skype通道傳入消息文本格式

我不明白,請重試

我發現Skype的自動格式的電子郵件在<a />標籤包裝它 - XMM格式和我有點堅持什麼應該做的。我認爲將傳入的文本格式更改爲純文本可以解決此問題。

我發現這個像similar issue on Github,但這是在C#上,我正在使用Node.JS.

如何將bot/skype頻道的默認文本格式更改爲純文本而不是降價,以免Skype自動格式化?

更新根據@ezequiel-jadib但仍然沒有運氣。也許我做錯了?

// bot.js 
bot.use(...[logger]); 

// logger.js 
module.exports = exports = { 
    receive: (e, next) => { 
     e.textFormat('plain'); 
     logConversation(e); 
     next(); 
    }, 
    send: (e, next) => { 
     logConversation(e); 
     next(); 
    } 
}; 
+0

爲什麼不按通道過濾,然後添加一些REGEX? –

+0

我不知道該怎麼做,我發現的關於頻道的唯一例子是爲臉書完成的,並且有一些與.NET軌道上的內容相關但與Node.JS無關的內容。 –

回答

0

爲了避免這種情況,你需要驗證,如果你有一個包裹HTML電子郵件地址,然後將其保存到session.dialogData之前提取字符串的電子郵件部分。

例如更換line 40

const usernameOrEmail = session.dialogData.usernameOrEmail = results.response; 

有:

// where results.response is in the format '<a href="[email protected]">[email protected]</a>' 
var exampleEmailWrappedInHtml = results.response; 

// validate if we have email wrapped in HTML from Skype 
if(exampleEmailWrappedInHtml.match(/<a href="mailto:/i)) { 
    console.log('HTML wrapped email detected!'); 
    const usernameOrEmail = session.dialogData.usernameOrEmail = exampleEmailWrappedInHtml.split('>')[1].split('<')[0]; 
} else { 
    console.log('no match.'); 
} 
+0

這是行不通的,因爲它永遠不會到達第40行。我認爲機器人響應來自Luis Intent。 –

0

您可以直接打電話到MessagetextFormat方法就像C#

接受的值爲:

export var TextFormat = { plain: 'plain', markdown: 'markdown', xml: 'xml' };

+0

我必須在什麼時候設置?我在'bot.use'中間件上試過了,但沒有奏效。 –

相關問題