Alexa Skill Connectionsの実装を試みています。スキルから PDF をプリンターで印刷させたいです。
Epsonプリンター(EP-879-AB) とはアカウントリンクが済んでおり、Epson Printerスキルからヘルプページが印刷できました。
kun432様が GitHub で公開されているコード(https://github.com/kun432/alexa-skill-connections-sample)を参考に以下のコードを作成しました。
const PrintPDFHandler = { canHandle(handlerInput) { return ( handlerInput.requestEnvelope.request.type === 'IntentRequest' && handlerInput.requestEnvelope.request.intent.name === 'PrintPDFIntent' ); }, async handle(handlerInput) { console.log('session'); const attributes = handlerInput.attributesManager.getSessionAttributes(), speakOutput = 'それではプリンタスキルを呼び出して印刷します。'; return handlerInput.responseBuilder .speak(speakOutput) .addDirective({ 'type': 'Connections.StartConnection', 'uri': 'connection://AMAZON.PrintPDF/1', 'input': { '@type': 'PrintPDFRequest', '@version': '1', 'title': 'サンプルのPDF', 'description': 'スキルコネクションズのサンプルのPDFです。', 'url': `https://example.com/pdf/sample.pdf` }, 'token': 'none' }) .getResponse(); }, }; const ConnectionsResponseHandler = { canHandle(handlerInput) { const request = handlerInput.requestEnvelope.request; return request.type === 'SessionResumedRequest'; }, handle(handlerInput) { const statusCode = handlerInput.requestEnvelope.request.cause.status.code; const statusMessage = handlerInput.requestEnvelope.request.cause.status.message; console.log(`SessionResumedRequest: code: ${statusCode}, msg: ${statusMessage}`); let speechText; switch (statusCode) { case "200": // 成功 speechText = "印刷を行いました。ご利用ありがとうございました。"; break; case "204": // ユーザキャンセル speechText = "またご利用くださいね。"; break; case "227": // 未アカウントリンク speechText = "プリンタスキルのアカウントリンクが行われていません。アレクサアプリでプリンタスキルの設定を行ってください。"; break; case "404": // プロバイダなし speechText = "プリンタスキルが有効になっていません。アレクサアプリでプリンタスキルを有効にしてください。"; break; default: speechText = "ごめんなさい、うまく行かなかったようです。また時間をおいてお試しください。"; break; } return handlerInput.responseBuilder .speak(speechText) .getResponse(); }, };
結果
地図を印刷して -> それではプリンタスキルを呼び出して印刷します。
-> コンソールの表示(SessionResumedRequest: code: 500, msg: Internal error.)
-> プリンターがまだ接続されていないようです。プリンターを探すように言ってください。
-> ごめんなさい、うまく行かなかったようです。また時間をおいてお試しください。
kun432様は Canonプリンターで成功したとのことですが、手元にCanonの対応プリンターがないためテストできませんでした。
Alexa Skill Connectionsの実装をされて、Epsonプリンターで印刷できた方がいらっしゃいましたら、ご助言いただければ幸いです。