AWS lambda函数在alexa中将数字称为数字

时间:2018-01-29 09:17:22

标签: aws-lambda alexa-skills-kit

我尝试使用 say-as interpret-as 让Alexa说出数字

示例 - 9822不能用单词而不是'9,8,2,2'

我尝试过的两种方法之一如下:

this.emit(':tell',"Hi "+clientname+" your "+theIntentConfirmationStatus+" ticket is sent to "+ "<say-as interpret-as='digits'>" + clientno + "</say-as>",'backup');  

另一个是:

this.response.speak("Hi "+clientname+" your "+theIntentConfirmationStatus+" ticket is sent to "+ "<say-as interpret-as='digits'>" + clientno + "</say-as>");

两者都不起作用,但正在开发一个单独的新功能。

3 个答案:

答案 0 :(得分:4)

实际上你的代码应该可行。 也许你可以在测试模拟器中尝试并向我们发送脚本生成的代码?还是日志?

我尝试了以下内容:

ID      | Col2 | 
----------------
123     | 2    | 
1234    | 2    | 
12345   | 3    |

数字,拼写和角色都有你想要的效果。 如果你想让Alexa说它太慢,请使用#4中的韵律。

尝试使用示例#2或#3,也许这可以解决? 否则,Amod的例子也会起作用。

答案 1 :(得分:0)

您可以使用示例功能将数字拆分为单个数字(请根据您的输入进行测试 - 未对所有输入进行测试)。您可以在stackoverflow上搜索类似的功能

function getNumber(tablenumber) {
    var number = (""+tablenumber).split("");
    var arrayLength = number.length;
    var tmp =" ";
    for (var i = 0; i < arrayLength; i++) {

        var tmp = tmp + myStringArray[i] + ", <break time=\"0.4s\"/> ";
    }
    return tmp;
}

在您的主要功能中......请致电

var finalresult = getNumber(clientno);
this.emit(':tell',"Hi "+clientname+" your "+theIntentConfirmationStatus+" ticket is sent to "+  finalresult ,'backup');

答案 2 :(得分:0)

编辑:是的,夜间闪光的答案很棒。 如果您需要其他格式,也可以自己分解数字,例如强调特定数字,添加暂停等。您需要使用Lambda代码将数字字符串转换为由空格分隔的多个数字以及您需要的任何其他格式

以下是基于this post中的答案的示例:

var inputNumber = 12354987;
var output = '';
var sNumber = inputNumber.toString();

for (var i = 0, len = sNumber.length; i < len; i += 1) {
    // just adding spaces here, but could be SSML attributes, etc.
    output = output + sNumber.charAt(i) + ' ';
}

console.log(output);

此代码可以通过其他许多方式进行重构和完成,但我认为这是最容易理解的。