Telegram
===
###### tags: `GSS` `telegram`
## 1.使用Telegram
(1) 需要建立一個 Telegram 的 bot
1. 建立 Telegram 的 bot 官方有一個專門的 bot 在處理 [BotFather](https://telegram.me/BotFather)
2. 加入 BotFather 之後請輸入 `/newbot` 他會請你輸入 bot 的名稱

3. 接下來會請你輸入 bot 的 username,在這邊請填入你的 bot 在 **ldl** 的 **bot id**

4. 完成後會顯示類似下面的畫面,請記住 BotFather 回覆的 **token**

5. 若是之後忘記 token,可以跟 BotFather 輸入 `token` 他就會顯示你的 bot 的 token
6. 設定bot在群組中的模式
* 如果你想要 bot 在群組中可以直接接收到所有人的訊息的話,請到 [BotFather](https://telegram.me/BotFather) 輸入 `/setprivacy` 並將 privacy 設定為 Disable
* 如果不想要 bot 在群組中一直回覆的話,一樣請到請到 [BotFather](https://telegram.me/BotFather) 輸入 `/setprivacy` 並將 privacy 設定為 Enable,這樣如果需要跟 bot 溝通,需要在文字前面加上 `/` bot 才會接收到訊息
(2) 註冊 Telegram Channel 所需要的設定
* token - 將 `步驟1` 取得的 token 填入 ldl 的 bot config 或是到 ldl admin 填入
```json
{
...,
"channelHook": {
"telegram": {
"token": "[your token]"
}
}
}
```
(3) 設定 **webhook**
1. 在 ldl admin 新增一個 telegram 的 channel 並輸入 token

2. 點擊存擋

3. 按下`設定 webhook` 按鈕即可設定完成


## 2.Telegram 的使用限制
#### (1) 訊息格式的轉換
| Bot Framework Message | Telegram |
| --------------------- | ----------------------------------------- |
| Text | Message |
| Suggested Action | keyboard button |
| Image | Image |
| Audio | Audio |
| Video | Video |
| Hero Card | Message |
| Thumbnail Card | Message |
| SignIn Card | Message |
| Receipt Card | N/A |
| Animation Card | Message |
| Audio Card | Audio |
| Video Card | Video |
| Adaptive Card | N/A |
#### (2) 一般訊息的限制 (文字、圖片、聲音、影像)
* **文字**
* text 最多 **4096** 個字
* **圖片**
* 圖片連結必須是有效的
* Url 字數沒有限定,支援的協定:HTTP、HTTPS
#### (3) 卡片格式的限制
* **文字**
* text 最多 **4096** 個字
* **圖片**
* 圖片連結必須是有效的
* Url 字數沒有限定,支援的協定:HTTP、HTTPS
* 一張卡片只能有一張照片
* **按鈕數量**
* 未限制
* **按鈕 Action**
* ImBack (註1)
* Button Label 字數未限制
* payload 最多 **64** 個字
* Postback
* Button Label 字數未限制
* payload 最多 **64** 個字
* URL
* Button Label 字數未限制
* Url 字數沒有限定,支援的協定:HTTP、HTTPS(此連結必須有效,否則顯示出來不會有連結的效果)
註1:ImBack 和 Postback 在卡片這邊都會被當做 PostBack
* **Gallery** (多個卡片橫向擺置)
* 不支援
#### (4) Quick Reply Message
* 支援以下按鈕 Action
* ImBack (註2)
* Button Label 字數未限制
* payload 最多 **64** 個字
* Postback
* Button Label 字數未限制
* payload 最多 **64** 個字
* URL
* Button Label 字數未限制
* Url 字數沒有限定,支援的協定:HTTP、HTTPS(此連結必須有效,否則顯示出來不會有連結的效果)
註2:ImBack 和 Postback 在卡片這邊都會被當做 ImBack 及顯示按鈕文字
#### (5) 其他限制
* Telegram 不支援 `Adaptive Card`
詳細可以查看[Telegram 官方文件](https://core.telegram.org/bots/api#available-methods)
## 3.LDL 防火牆設定
Teams 發 request 到 LDL,ip 如下:
* 91.108.6.156 port 80 and 443
LDL 會發 request 到 Teams,domain 如下:
* https://api.telegram.org port 80 and 443