텔레그램 / 커스텀 /키보드 / 키 버튼 / 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"
댓글 없음:
댓글 쓰기