[컴] Telegram 에서 custom keyboard 사용하는 법

텔레그램 / 커스텀 /키보드 / 키 버튼 / UI / UX /봇 UI / 봇 키보드 / 봇 버튼 만들기 / 텔레


Telegram 에서 custom keyboard 사용하는 법

webHook 에 대한 사용법은 Telegram WebHook 사용하기 를 참고하자.

bot 으로 sendMessage

bot 과의 chat room 에 메시지를 보내는 법은 getUpdates 일 때와 동일하다.(see also 1. 참고)

이 때 사용되는 chat_id 는 webHook server로 오는 message 에서 확인할 수 있다.

https://api.telegram.org/bot<token>/sendMessage?chat_id=234324&text=helloworld

그밖의 다른 method 는 아래 링크에서 찾아볼 수 있다.

custom keyboard

sendMessage 등의 method 에서 replay_markup 을 통해서 keyboard 를 보여주게 할 수 있다. 아래처럼 message 를 보내면 된다.

keyboard

아래처럼 keyboard 는 항상 typing 할 때 사용할 수 있는 keyboard 가 된다. 그래서 삭제하는 option 이 따로 있다. 이 keyboard 가 보이면, 기본적으로 / (command) option 이 보이지 않는다.

키보드에서 버튼을 누르면 그 값이 바로 message 로 send 가 된다.

curl --tlsv1.2 -v -k -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache"  -d '{
"chat_id":157687679,
"text" : "test-text",
"reply_markup":{
    "resize_keyboard": false, "one_time_keyboard": true, 
    "keyboard": [
        [{"text":"Text1"},{"text":"Text2"}],
        [{"text":"Text3"}]
    ]
}

}' "https://api.telegram.org/bot<token>/sendMessage"
삭제방법
curl --tlsv1.2 -v -k -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache"  -d '{
"chat_id":157687679,
"text" : "test-text",
"reply_markup":{
    "remove_keyboard": true, "selective": false
}

}' "https://api.telegram.org/bot<token>/sendMessage"

inline_keyboard

inline keyboard 도 기본적으로 버튼을 누르면 webHook 서버로 응답이 온다. 아래처럼 버튼이 누른 값을 callback_data 로 set 해주면 된다. 다른 가능한 값들은 아래 링크를 참고하자

curl --tlsv1.2 -v -k -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache"  -d '{
"chat_id":157687679,
"text" : "test-text",
"reply_markup":{
    "inline_keyboard": [
        [{"text":"Text1", "callback_data": -1},{"text":"Text2", "callback_data": 10}],
        [{"text":"Text3", "callback_data": 30}]
    ]
}

}' "https://api.telegram.org/bot<token>/sendMessage"

force_replay

force_reply 를 사용해서 webHook 에서 telegram 으로 보내게 되면, message 에서 reply 를 사용해서 message 를 보내는 것처럼, user 가 버튼을 누를때 webHook 이 응답을 받게 된다.

이것은 privacy mode 에서 의미가 있다. bot 이 group 에 들어가 있을때 privacy mode 라면, '/' 로 시작되는 message 또는 자신에게 reply 로 보내는 message 만 webHook 으로 날라오기 때문이다. 

force_replay 를 사용할 때 option 에 'selective' 를 true 하면, group 내의 모든 member 가 reply mode 로 들어가게 된다.

하지만 selective 를 false 로 하면
'text' field 에 @(mention) 이 된 user 와
replay_to_message_id 와 관련된 user 만
reply mode 로 들어간다.

curl --tlsv1.2 -v -k -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache"  -d '{
"chat_id":157687679,
"text" : "@username songtype-rep-test-text",
"reply_to_message_id": 1002, "reply_markup":{ "force_reply": true, "selective": true } }' "https://api.telegram.org/bot<token>/sendMessage"

댓글 없음:

댓글 쓰기