LoginSignup
0
1

More than 5 years have passed since last update.

Kotlin で Async (await) な LINE BOT を書いてみた

Last updated at Posted at 2017-04-18

SDK は公式の Java SDK がそのまま使える。

  1. webhook を受け取る
  2. 非同期で getProfile を呼ぶ
  3. 完了したら、TextMessage で返す
package com.example

import com.linecorp.bot.client.LineMessagingClient
import com.linecorp.bot.model.event.MessageEvent
import com.linecorp.bot.model.event.message.TextMessageContent
import com.linecorp.bot.model.message.Message
import com.linecorp.bot.model.message.TextMessage
import com.linecorp.bot.spring.boot.annotation.EventMapping
import com.linecorp.bot.spring.boot.annotation.LineMessageHandler
import kotlinx.coroutines.experimental.future.await
import kotlinx.coroutines.experimental.future.future
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication


@SpringBootApplication
@LineMessageHandler
open class Application(val client: LineMessagingClient) {
    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            SpringApplication.run(Application::class.java, *args)
        }
    }

    @EventMapping
    fun echoText(event: MessageEvent<TextMessageContent>) = future<Message> {
        val userProfile = client.getProfile(event.source.userId).await();
        return@future TextMessage("${event.message} from ${userProfile.displayName}");
    }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1