Übersicht

Die Funktion liefert die letzte Rückmeldung des Custom Skills an die Amazon Server zurück.

ACSWebHook_GetLastResponse(int $instanceId): \Patami\IPS\IO\ResponseInterface

Die Funktion bzw. die Methode GetLastResponse() wird intern vom Framework genutzt, um den Built-in Standard-Intent AMAZON.RepeatIntent zu implementieren.

Falls der Skill noch keine Antwort gegeben hat, wird eine Exception geworfen. Für Details siehe die API Dokumentation der Methode.

Parameter

ParameterBeschreibung
$instanceIdIPS Objekt ID der Instanz.

Beispiele

Das folgende Beispiel gibt einen Dump des letzten Response-Objektes aus:

<?php
$instanceId = 48493 /*[Alexa Custom Skill]*/;
// Response-Objekt ausgeben
$response = ACSWebHook_GetLastResponse($instanceId);
var_dump($response);
Ausgabe des Beispiel-Skriptes
object(Patami\IPS\Services\Alexa\Skills\Custom\AskResponse)#6 (6) {
  ["shouldEndSession":protected]=>
  bool(false)
  ["speechOutput":protected]=>
  object(Patami\IPS\Services\Alexa\Skills\Custom\PlainTextSpeechOutput)#7 (1) {
    ["text":protected]=>
    string(143) "Ich kann Dir sagen wie viele Objekte unterschiedlicher Typen im System vorhanden sind. Zu welcher Art von Objekt willst Du Informationen haben?"
  }
  ["repromptSpeechOutput":protected]=>
  object(Patami\IPS\Services\Alexa\Skills\Custom\PlainTextSpeechOutput)#8 (1) {
    ["text":protected]=>
    string(10) "Wie bitte?"
  }
  ["card":protected]=>
  NULL
  ["callbackIntent":protected]=>
  NULL
  ["request":protected]=>
  object(Patami\IPS\Services\Alexa\Skills\Custom\WebHookRequest)#9 (12) {
    ["io":protected]=>
    object(__PHP_Incomplete_Class)#10 (3) {
      ["__PHP_Incomplete_Class_Name"]=>
      string(12) "HookInstance"
      ["library":protected]=>
      object(Patami\IPS\Libraries\Library)#11 (3) {
        ["name":protected]=>
        string(1) "-"
        ["repositoryInfo":protected]=>
        NULL
        ["fileInfo":protected]=>
        NULL
      }
      ["InstanceID":protected]=>
      int(48493)
    }
    ["requestId":protected]=>
    string(59) "amzn1.echo-api.request.c7dd6537-3ec4-44fb-8ba2-0caaa9333eee"
    ["requestType":protected]=>
    string(13) "LaunchRequest"
    ["sessionId":protected]=>
    string(59) "amzn1.echo-api.session.29974bf6-dfd1-4492-8268-4374a5417096"
    ["attributes"]=>
    object(Patami\IPS\Services\Alexa\Skills\Custom\SessionAttributes)#12 (1) {
      ["data":protected]=>
      array(0) {
      }
    }
    ["slots"]=>
    object(Patami\IPS\Services\Alexa\Skills\Custom\IntentSlots)#13 (1) {
      ["data":protected]=>
      array(1) {
        ["subject"]=>
        NULL
      }
    }
    ["callbackIntent":protected]=>
    NULL
    ["callbackSourceIntent":protected]=>
    NULL
    ["isProcessing":protected]=>
    bool(false)
    ["intentStack":protected]=>
    array(1) {
      [0]=>
      string(14) "GetInformation"
    }
    ["data":protected]=>
    array(4) {
      ["version"]=>
      string(3) "1.0"
      ["session"]=>
      array(4) {
        ["new"]=>
        bool(true)
        ["sessionId"]=>
        string(59) "amzn1.echo-api.session.29974bf6-dfd1-4492-8268-4374a5417096"
        ["application"]=>
        array(1) {
          ["applicationId"]=>
          string(52) "amzn1.ask.skill.433f0ada-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
        ["user"]=>
        array(1) {
          ["userId"]=>
          string(225) "amzn1.ask.account.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      }
      ["context"]=>
      array(2) {
        ["AudioPlayer"]=>
        array(1) {
          ["playerActivity"]=>
          string(4) "IDLE"
        }
        ["System"]=>
        array(4) {
          ["application"]=>
          array(1) {
            ["applicationId"]=>
            string(52) "amzn1.ask.skill.433f0ada-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          }
          ["user"]=>
          array(1) {
            ["userId"]=>
            string(225) "amzn1.ask.account.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
          }
          ["device"]=>
          array(2) {
            ["deviceId"]=>
            string(173) "amzn1.ask.device.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            ["supportedInterfaces"]=>
            array(1) {
              ["AudioPlayer"]=>
              array(0) {
              }
            }
          }
          ["apiEndpoint"]=>
          string(30) "https://api.eu.amazonalexa.com"
        }
      }
      ["request"]=>
      array(4) {
        ["type"]=>
        string(13) "LaunchRequest"
        ["requestId"]=>
        string(59) "amzn1.echo-api.request.c7dd6537-3ec4-44fb-8ba2-0caaa9333eee"
        ["timestamp"]=>
        string(20) "2017-05-14T13:26:58Z"
        ["locale"]=>
        string(5) "de-DE"
      }
    }
    ["locale":protected]=>
    string(5) "de-DE"
  }
}

Es kann sein, dass das Beispiel bei Dir keine Daten anzeigt. Dies ist dann der Fall, wenn der Skill noch keine Antwort an die Amazon Server gesendet hat.

In diesem Fall wird im IPS Log folgender Fehler protokolliert, wenn Du den die Protokollierung von Fehlern und Ausnahmen aktiviert hast:

15.05.2017 00:16:51 | PHP Exception | Class: Patami\IPS\Services\Alexa\Skills\Custom\Exceptions\LastResponseNotFoundException

Stelle eine Anfrage an den Skill und führe das Skript erneut aus.

Siehe auch

  • No labels