More Related Content
Similar to Use Kotlin scripts and Clova SDK to build your Clova extension (20)
More from LINE Corporation (20)
Use Kotlin scripts and Clova SDK to build your Clova extension
- 1. / F @ DE @D@
3C @D C DC 9 @F 1
D@ E 9 @E @F D C @
99 4 / 020
# #
- 5. • 1 .1 1 ) - -
• 1 1 3 (- - 3 (
• 1 -2 1 )
- 6. ( ) ) )
dependencies {
implementation "org.jetbrains.kotlin:kotlin-script-util:$kotlinVersion"
implementation "org.jetbrains.kotlin:kotlin-script-runtime:$kotlinVersion"
implementation "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion”
}
Add the dependencies
- 7. ( ) ) )
org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory
add a file javax.script.ScriptEngineFactory in “resources/META-INF/services/”
- 8. ( ) ) )
private val scriptEngine: ScriptEngine = ScriptEngineManager().getEngineByExtension("kts")!!
Get the ScriptEngine
- 9. )( ( (
(
val x = scriptEngine.eval(
"""
fun x(input: Int): Int = input + 3
""")
x=?x=null
- 10. )( ( (
(
val y = scriptEngine.eval(
"""
fun x(input: Int): Int = input + 3
val y = x(2)
""")
y=?y=null
- 11. )( ( (
(
val x = scriptEngine.eval(
"""
fun x(input: Int): Int = input + 3
x(2)
""")
x=?x=5
- 12. )( ( (
(
val value = scriptEngine.eval(
"""
fun x(input: Int): Int = input + 3
val x = x(2)
var y = x
x
y = x(7)
""")
value=?value=null
- 13. )( ( (
(
val value = scriptEngine.eval(
"""
fun x(input: Int): Int = input + 3
var x = x(2)
var y = x
x = 10
x
y + 1
""")
value=?value=6
- 17. val client: ClovaClient = clovaClient(applicationId = "YOUR APPLICATION ID") {
objectMapper = JacksonObjectMapper() //SDK only supports Jackson now
launchHandler { request, session ->
simpleResponse(message = " ")
}
intentHandler { request, session ->
val value = request.intent.slots["number"]?.value
simpleResponseWithReprompt(
message = " ${value} ",
repromptMessage = " ”
)
}
sessionEndedHandler { request, session ->
simpleResponse(message = " ")
}
}
- 18. val client: ClovaClient = clovaClient(applicationId = "YOUR APPLICATION ID") {
objectMapper = JacksonObjectMapper()
launchHandler { request, session ->
simpleResponse(message = “ ”) // Helper function
}
intentHandler { request, session ->
val value = request.intent.slots["number"]?.value
simpleResponseWithReprompt(
message = " ${value} ",
repromptMessage = " ”
)
}
sessionEndedHandler { request, session ->
simpleResponse(message = " ")
}
}
- 19. val client: ClovaClient = clovaClient(applicationId = "YOUR APPLICATION ID") {
objectMapper = JacksonObjectMapper()
launchHandler { request, session ->
simpleResponse(message = " ")
}
intentHandler { request, session ->
val value = request.intent.slots["number"]?.value
simpleResponseWithReprompt(
message = " ${value} ",
repromptMessage = " ”
)
}
sessionEndedHandler { request, session ->
simpleResponse(message = " ")
}
}
- 20. val client: ClovaClient = clovaClient(applicationId = "YOUR APPLICATION ID") {
objectMapper = JacksonObjectMapper()
launchHandler { request, session ->
simpleResponse(message = " ")
}
intentHandler { request, session ->
val value = request.intent.slots["number"]?.value
simpleResponseWithReprompt(
message = " ${value} ",
repromptMessage = " ”
)
}
sessionEndedHandler { request, session ->
simpleResponse(message = " ")
}
}
- 22. typealias RequestHandler<T> = suspend (T, Session) -> ClovaExtensionResponse
launchHandler { request, session ->
simpleResponse(message = “ ”) ! // return ClovaExtensionResponse
}
- 23. //requestBody and response are json strings
val response = client.handleClovaRequest(requestBody, request.headers().asHttpHeaders())
- 27. val clovaClient = scriptEngine.eval("""
clovaClient(applicationId = "APPLICATION_ID") {
launchHandler { ... }
intentHandler { ... }
sessionEndedHandler { ... }
}
""")
- 28. val clovaClient = scriptEngine.eval("""
import com.linecorp.clova.extension.client.*
import com.linecorp.clova.extension.model.util.*
import com.linecorp.clova.extension.model.response.*
import com.linecorp.clova.extension.converter.jackson.JacksonObjectMapper
clovaClient(applicationId = "YOUR APPLICATION ID") {
launchHandler { ...}
intentHandler { ... }
sessionEndedHandler { ... }
}
""")
- 29. val clovaClient = scriptEngine.eval(
"""
import …
clovaClient(applicationId = "APPLICATION_ID") {
…
}
""")
…
val response = client.handleClovaRequest(requestBody, request.headers().asHttpHeaders())
- 30. val clovaClient = scriptEngine.eval(
"""
import …
clovaClient(applicationId = "APPLICATION_ID") {
…
}
""")
…
val response = client.handleClovaRequest(requestBody, request.headers().asHttpHeaders())
! Input the script from web