小编Mik*_*i P的帖子

如何获得Alexa userId?

我正在构建一个Alexa技能,它要求我存储用户的userId.我试图用它来检索它event.session.user.userId.但是,当我console.log(event.session.user.userId)按字面意思调用输出时amzn1.ask.account.[unique-value-here].我看了几个类似的问题,但没有一个能为我提供足够明确的答案.

我不确定这是一个错误,仅限开发人员,还是userId只是匿名化.如果是这样,有没有办法获得实际的userId?我想会有,因为亚马逊在这里写了一整个指南:

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system.

然而,经过漫长的一天调试后,我不确定什么是真实的,什么不是.

 var request = require('request');
var firebase = require('firebase');
var config = {
    apiKey: "my-api-key",
    authDomain: "stuff...",
    databaseURL: "more stuff...",
    storageBucket: "even more stuff...",
};
firebase.initializeApp(config);
// Get a reference to the database
var database = firebase.database();

exports.handler = (event, context) => {
    try {
        // New session
        if (event.session.new) {
            // New Session
            console.log("NEW SESSION");
        }

        // Launch Request
        switch (event.request.type) {
            case "LaunchRequest":
                var url = "https://api.random.org/json-rpc/1/invoke";
                var …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services alexa aws-lambda alexa-skills-kit

13
推荐指数
2
解决办法
1万
查看次数

无法在iOS 11上使用TwitterKit发送推文

我试图通过提供的TWTRComposer类使用TwitterKit撰写推文.这是我打电话的功能:

-(void) tweet:(UIViewController *) root {
    TWTRComposer *composer = [[TWTRComposer alloc] init];

    [composer setText:@"just setting up my Twitter Kit"];

    // Called from a UIViewController
    [composer showFromViewController:root completion:^(TWTRComposerResult result) {
        if (result == TWTRComposerResultCancelled) {
            NSLog(@"Tweet composition cancelled");
        }
        else {
            NSLog(@"Sending Tweet!");
        }
    }];
}
Run Code Online (Sandbox Code Playgroud)

这有两个问题:

  1. 当Twitter应用程序安装在我的设备上时,会显示TWTRComposer对话框,但不久之后,另一个警报显示在顶部,标题为" 没有Twitter帐户 ",并显示以下消息:" 没有Twitter帐户您可以在"设置 "中添加或创建一个Twitter帐户. "我可以忽略此对话框,然后发送推文(成功),但这显然是非常糟糕的用户体验.此外,此错误对话框很奇怪,因为iOS 11在设置中不再有Twitter.
  2. 如果我的设备上安装Twitter应用程序,则根本不会显示TWTRComposer对话框.相反,showFromViewController立即调用方法中的完成块,结果类型为TWTRComposerResultCancelled.

我有一种感觉,这可能与Twitter的登录问题有某种关系.我正在处理的应用程序不包括使用Twitter注册/登录.但是,我的印象是TWTRComposer处理所有登录.

任何帮助都非常感谢,谢谢你的阅读!

twitter ios tweets twitterkit

8
推荐指数
1
解决办法
4031
查看次数

在AWS Lambda中收听Firebase数据库超时

我正在构建一个Alexa技能,这需要我收听Firebase实时数据库.在技​​能的一个特定部分,我需要向Firebase编写一个JSON对象,由两个字段组成,"intent",值无关紧要,"done",值为false.

然后,我等待另一个监听此数据库的设备注册此更改,此时它会创建另一个名为"result"的字段,并带有一些数值,并将"done"的值更改为true.

然后原始函数(test1)应该识别"完成"的值何时为真,然后检索"结果"的值.

我遇到的问题是提出一个函数,它在我的主(异步)函数完成之前完成所有这些读/写操作.正如标题所示,AWS Lambda由于某种原因超时,我无法读取"结果"的值.

这是我正在使用的功能:

function test1(intentName, targetRef, context) {
    console.log("writing");
    targetRef.set({
        intent: intentName,
        done: false
    }).then(function() {
        return targetRef.orderByChild("done").equalTo(true).on("value");
    }).then(function(snapshot) {
        var res = snapshot.val().result;
        console.log("Res: " + res);
        context.succeed( //context.succeed should be called after "result" has a value.
            generateResponse(
                buildSpeechletReponse("The result is" + processNumbersForSpeech(res), true),
                {}
            )
        );
    });
}
Run Code Online (Sandbox Code Playgroud)

这是控制台的输出(在AWS Lambda中):

    ?
20:05:31
START RequestId: a25d2354-d9cb-11e6-b80a-f35142a5f45f Version: $LATEST
20:05:31
2017-01-13T20:05:31.464Z    a25d2354-d9cb-11e6-b80a-f35142a5f45f    writing
?
20:05:35
END RequestId: a25d2354-d9cb-11e6-b80a-f35142a5f45f
?
20:05:35
REPORT RequestId: a25d2354-d9cb-11e6-b80a-f35142a5f45f …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services firebase aws-lambda firebase-realtime-database

7
推荐指数
1
解决办法
988
查看次数

如何为导航抽屉项目添加长按功能?

正如标题所示,我正在尝试向应用程序导航抽屉中的项目添加长按功能。这些项目是动态添加的(不是从 navigation_drawer_menu.xml 膨胀的),因此我无法通过在 xml 文件中指定某些属性来解决这个问题。

我查看了 Stackoverflow 上的几个问题,特别是这个问题:How to set a long click Listener on a MenuItem (on a NavigationView)? 。我已经实现了 setActionView 解决方案,但最终在导航抽屉项的右侧边缘出现了一个空白按钮。当我长按文本时,没有任何反应。当我长按空白小按钮时,我得到了我想要的东西。

如何为整个 menuItem 设置 OnLongClickListener,而不仅仅是其右侧的(我假设它是一个按钮)?感谢您的阅读,如果需要更多信息,我很乐意为您提供帮助:)

java navigation android menuitem

5
推荐指数
1
解决办法
2141
查看次数

"无法读取属性'然后'未定义',尽管返回了Promise

我正面临着一个似乎常见的问题,然而,我真的无法弄清楚如何解决它.

我正在调用函数发出一个GET请求,解析返回的JSON,然后(据说)返回一个Promise,我用它来打印解析的JSON数据.但是,当我尝试这样做时,我收到了这个问题标题中描述的错误.我有两个文件,我正在使用.第一个简单地从第二个函数调用一个函数,并尝试打印返回值(并获取错误).

第一档:

var secondFile = require('./test');
secondFile.testFunc("some stuff").then(function(res) {
    console.log(res);
})
Run Code Online (Sandbox Code Playgroud)

第二个文件(test.js):

module.exports = {
    testFunc : function(address) {
        var params = {
            q: address,
            format: "json"
        }
        var baseUrl = "http://google.com";
        rp({url: baseUrl,
            qs: params,
            method: "GET"})
            .then(function(body) {
                var parsedBody = JSON.parse(body);
                var result = {one: parsedBody[0], two: parseBody[1]};
                return new Promise(function(resolve, reject) {
                    resolve(result);
                });
            }).catch(function(err) {
                console.log(err);
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.

javascript asynchronous node.js promise

0
推荐指数
1
解决办法
3850
查看次数