SDK は公式の Java SDK がそのまま使える。
- webhook を受け取る
- 非同期で getProfile を呼ぶ
- 完了したら、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}");
}
}