2016-03-11 60 views
1

對話服務是否支持表情符輸入?IBM Watson對話表情符輸入

我同時使用能夠輸出表情符號:HTML實體(十進制)HTML實體(十六進制)http://www.fileformat.info/info/unicode/char/1f37b/index.htm

但是,我不能讓對話服務,以瞭解的表情符號輸入。 Emojis in dialog conversation

+0

獅子座是正確的。但是,爲什麼不在最終用戶應用程序和對話框API實例之間添加一個過濾器層,並使用簡單的字符串(如「happyface」或「beer」)來替換表情符號字符。 –

+0

酷酷,好主意,我不確定要做到這一點,但我會研究它。謝謝! –

+0

在GitHub上查看[pizza demo code](https://github.com/watson-developer-cloud/dialog-nodejs)。他們基本上做的是在node.js中構建一箇中間件,將對話端點暴露給用戶的瀏覽器,而不必通過服務憑證或端點URL等重要細節。您可以添加一個JavaScript函數,它可以在app.js之前的第55行之前調用req.body中的對話輸入,併爲每個有興趣捕獲的emojis執行一次string.replace(emoji,textreplacement)。然後將結果發佈到服務上,就像他們在 –

回答

1

你當然可以。這裏有一個例子:

<?xml version="1.0" encoding="UTF-8" ?> 
<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.0.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<flow> 
<folder label="Main"> 

輸出最初的提示:

<output> 
    <prompt> 
     <item>Write something and I’ll echo it back to you.</item> 
    </prompt> 
    </output> 

獲取輸入:

<getUserInput> 
    <input> 
     <grammar> 
     <item>(ANYTHING)={anything}</item> 
     </grammar> 
     <action varName="anything" operator="SET_TO">{anything.source}</action> 
     <output> 
     <prompt> 
      <item>{anything}</item> 
     </prompt> 
     </output> 
    </input> 
    </getUserInput> 

</folder> 
</flow> 

現在,我想你已經試圖捕捉輸入IBM確實是在一路它的例子。但是這種方法會悄悄地丟棄許多非ASCII字符。這不是你想要捕捉輸入的方式。 (對於有些則丟棄該字符的列表,請參閱this SO answer

這裏是我如何做到這一點:

<entities> 
    <entity name="ANYTHING"> 
    <value> 
     <grammar> 
     <item>!.*</item> 
     </grammar> 
    </value> 
    </entity> 
</entities> 

驚歎號意味着我們使用正則表達式。 (!之後的所有東西都是正則表達式。)這種方法不會丟棄儘可能多的字符,但會丟棄<>。可能是其他人。你可以使用這個腳本來找出哪些字符是安全的。

最後我們需要變量來捕獲。

<variables> 
    <var_folder name="Home"> 
    <var name="anything" type="TEXT" /> 
    </var_folder> 
</variables> 

</dialog> 

查看this gist的完整示例。