SIRIKIT没有退回账单

时间:2017-03-02 18:51:38

标签: ios swift sirikit

我正在尝试使用sirikit返回我存储在firebase上的帐单。它没有返回它找到的账单。这是我的句柄功能。我正在使用getBills函数从数据库中获取账单:

func handle(searchForBills intent: INSearchForBillsIntent, completion: @escaping (INSearchForBillsIntentResponse) -> Void) {
         var arrayOfBills: [INBillDetails] = []
         APIManager.getBills { (success, bills) in
            if(success) {
            for bill in bills {
                 if (bill.type == intent.billType.rawValue) {
                    var nickname: INSpeakableString = INSpeakableString(identifier: bill.billPayeeNickName, spokenPhrase: bill.billPayeeNickName, pronunciationHint: bill.billPayeeNickName)
                    var organizationalName: INSpeakableString = INSpeakableString(identifier: bill.billPayeeOrganzationalName, spokenPhrase: bill.billPayeeOrganzationalName, pronunciationHint: bill.billPayeeOrganzationalName)

                    var billPayee: INBillPayee = INBillPayee(nickname:  nickname, number: bill.billPayeeAccountNumber, organizationName: organizationalName)!
                    var nsDecimalTotal: NSDecimalNumber = NSDecimalNumber(string: bill.total)
                    var amountDueInCurrency: INCurrencyAmount = INCurrencyAmount(amount: nsDecimalTotal, currencyCode: "$")

                    var dateC: DateComponents = DateComponents(calendar: Calendar.current , timeZone: TimeZone.current, era: 1, year: 2017, month: 5, day: 23, hour: 2, minute: 2, second: 2, nanosecond: 2, weekday: 3, weekdayOrdinal: 3, quarter: 3, weekOfMonth: 23, weekOfYear: 33, yearForWeekOfYear: 44)

                    var billToReturn = INBillDetails(billType: INBillType(rawValue: bill.type)!, paymentStatus: INPaymentStatus(rawValue: bill.status)!, billPayee: billPayee, amountDue: amountDueInCurrency, minimumDue: amountDueInCurrency, lateFee: amountDueInCurrency, dueDate: dateC, paymentDate: dateC)
                    arrayOfBills.append(billToReturn!)
                 }
            }
                print("success")
                var response = INSearchForBillsIntentResponse(code: .failure, userActivity: nil)
                //response.bills = arrayOfBills
                completion(response)
             }
            else {
                print("failed")
                completion(INSearchForBillsIntentResponse(code: .failure, userActivity: nil))
            }
    }

1 个答案:

答案 0 :(得分:0)

您的INSearchForBillsIntentResponse在两个条件下都以“失败”启动。您没有成功代码 - 这可能导致Siri不退还账单。 您还需要取消对响应的帐单分配。

我最初对Bills功能也有一些问题,但看起来大多数错误都是通过iOS 10.3 beta 4修复的(尽管SearchForBills UI并不是很好)。