Clova¶
An abstracted layer on top of the cek.core
module.
URL¶
Message¶
MessageSet¶
Clova¶
-
class
cek.clova.
Clova
(application_id, default_language='ja', debug_mode=False)¶ Clova provides the easiest way to create your extension.
Parameters: Raises: ValueError – if unsupported language is specified.
Variables: handle (RequestHandler) – Helper to handle requests from CEK. Request handlers must be defined using the handler.
- Usage:
Create
Clova
instance:>>> from cek import Clova >>> clova = Clova(application_id='', default_language='jp', debug_mode=True)
Define request handlers using (
Clova.handle
). Response can be created usingClova.response()
.>>> @clova.handle.launch ... def launch_request_handler(clova_request): ... return clova.response("こんにちは世界。スキルを起動します")
>>> @clova.handle.default ... def default_handler(clova_request): ... return clova.response("もう一度お願いします")
Plug into your web application using
Clova.route()
:>>> rom flask import Flask, request, jsonify >>> app = Flask(__name__) >>> @app.route('/app', methods=['POST']) ... def my_service(): ... resp = clova.route(request.data, request.headers) ... resp = jsonify(resp) ... resp.headers['Content-Type'] = 'application/json;charset-UTF-8' ... return resp
See docs for
Clova.route()
andClova.response()
for detailed usages.-
response
(message, reprompt=None, end_session=False)¶ Create a Response that should be sent back to CEK
Parameters: Returns: Response containing passed message
Return type: Raises: ValueError – if unsupported language is specified.
- Usage:
>>> import cek >>> from cek import Clova >>> from pprint import pprint >>> clova = Clova(application_id="", default_language="ja", debug_mode=True)
Simplest case:
>>> resp = clova.response("こんにちは") >>> pprint(resp) {'response': {'card': {}, 'directives': [], 'outputSpeech': {'type': 'SimpleSpeech', 'values': {'lang': 'ja', 'type': 'PlainText', 'value': 'こんにちは'}}, 'shouldEndSession': False}, 'sessionAttributes': {}, 'version': '1.0'}
With explicit language:
>>> resp = clova.response(cek.Message("English", language="en")) >>> pprint(resp) {'response': {'card': {}, 'directives': [], 'outputSpeech': {'type': 'SimpleSpeech', 'values': {'lang': 'en', 'type': 'PlainText', 'value': 'English'}}, 'shouldEndSession': False}, 'sessionAttributes': {}, 'version': '1.0'}
URL:
>>> resp = clova.response(cek.URL("https://dummy.mp3")) >>> pprint(resp) {'response': {'card': {}, 'directives': [], 'outputSpeech': {'type': 'SimpleSpeech', 'values': {'lang': '', 'type': 'URL', 'value': 'https://dummy.mp3'}}, 'shouldEndSession': False}, 'sessionAttributes': {}, 'version': '1.0'}
List:
>>> resp = clova.response(["こんにちは", cek.URL("https://dummy.mp3")]) >>> pprint(resp) {'response': {'card': {}, 'directives': [], 'outputSpeech': {'type': 'SpeechList', 'values': [{'lang': 'ja', 'type': 'PlainText', 'value': 'こんにちは'}, {'lang': '', 'type': 'URL', 'value': 'https://dummy.mp3'}]}, 'shouldEndSession': False}, 'sessionAttributes': {}, 'version': '1.0'}
With reprompt message:
>>> resp = clova.response("こんにちは", reprompt="聞こえていますか?") >>> pprint(resp) {'response': {'card': {}, 'directives': [], 'outputSpeech': {'type': 'SimpleSpeech', 'values': {'lang': 'ja', 'type': 'PlainText', 'value': 'こんにちは'}}, 'reprompt': {'outputSpeech': {'type': 'SimpleSpeech', 'values': {'lang': 'ja', 'type': 'PlainText', 'value': '聞こえていますか?'}}}, 'shouldEndSession': False}, 'sessionAttributes': {}, 'version': '1.0'}
-
route
(body, header)¶ Route request from CEK to handlers
Depending on the request type (intent, launch, etc), the function routes the request to the proper handler defined by the user and returns the response as a dictionary. Request verification is done per request before routing.
The method is an alias to
cek.core.RequestHandler.route_request()
.Parameters: Returns: Returns body for CEK response
Return type: Raises: - cryptography.exceptions.InvalidSignature – (non-debug mode only) if request verification failed.
- RuntimeError – (non-debug mode only) if application id is incorrect.
- Usage:
>>> from cek import Clova >>> clova = Clova(application_id="", default_language="ja", debug_mode=True) >>> from flask import Flask, request, jsonify >>> app = Flask(__name__) >>> @app.route('/app', methods=['POST']) ... def my_service(): ... resp = clova.route(request.data, request.headers) ... resp = jsonify(resp) ... resp.headers['Content-Type'] = 'application/json;charset-UTF-8' ... return resp