[生活日常] 影片後製之來趣豐原

一群為了自己在乎的城市而做出貢獻的朋友,利用自己空閒的時間,沒有支薪,還自掏腰包,到處在台中豐原介紹當地的美食。

從去年下半年開始,我自學影片的後製,當然也有朋友協助教學,或是在我碰到問題時協助我。

因緣際會下,得知這群朋友正在做這件有意義的事情,所以我自告奮勇向他們提出,可以幫忙影片的後製,一方面可以協助他們,一方面可以有更多練習的機會。

我是豐原人粉絲頁

來趣豐原YouTube

[Telegram] Telegram(七) 以 C# 實作對談式 Telegram bot 機器人

  • 還是使用 Windows Application 的方式建立專案,但是這個對談式的機器人只能說是一個簡易性的機器人,只能回答制式的答案,需要再 LUIS (Language Understanding Intelligent Service),才能做到如真人般的交談。
private static readonly Telegram.Bot.TelegramBotClient tg = new Telegram.Bot.TelegramBotClient(apiToken);

private async void butBot_Click(object sender, EventArgs e)
{
   tc.OnMessage += Tc_MessageReceived;
   tc.StartReceiving();
}

private void Tc_MessageReceived(object sendor, Telegram.Bot.Args.MessageEventArgs e)
{
   // 機器人收到什麼訊息,就在訊息前面加上「你剛才說:」,然後回傳
   tg.SendTextMessageAsync(e.Message.Chat.Id, "你剛才說:" + e.Message.Text);

   // 機器人如果收到「/早安」或「/你好嗎?」這兩個訊息,則會回傳相對應的訊息;如果收到其他訊息,則回傳列出可以回答的選項
   /*if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
   {
      if (e.Message.Text == "/你好嗎?")
         tg.SendTextMessageAsync(e.Message.Chat.Id, "我很好,謝謝你!你呢?");
      else if (e.Message.Text == "/早安")
         tg.SendTextMessageAsync(e.Message.Chat.Id, "早安 " + e.Message.Chat.Username);
      else
      {
         tg.SendTextMessageAsync(e.Message.Chat.Id, @"Usage : 
            /你好嗎?
            /早安
            ");
      }
   }*/
}
  • 程式畫面,僅需要一個按鈕,按下按鈕後,即開始執行對談式機器人。

程式畫面

  • 執行結果

執行結果

 

 

 

[Telegram] Telegram(六) 以 C# 透過 Telegram bot 廣播訊息到 Channel

  • 在 Nuget上有些其他開發人員已經整理好的 SDK,我是使用這套:(但沒法擔保這個套件沒有問題,如果要使用,請自行留意)

Nuget SDK

  • 透過 Telegram bot 廣播訊息到 Channel 有兩種方式:WebRequest 及 上述的 SDK 。不管是用什麼方式,皆可以使用 Windows Application 來開發,這也是我覺得很方便的一點。
  • 使用 WebRequest 的程式碼如下:
string urlString = "https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}";
string text = txtMessage.Text;
urlString = String.Format(urlString, apiToken, chatId, text);

// 如果使用的 .net framework 版本是低於 4.6 ,那麼需要加下面這行程式碼,如果高於 4.6 (含4.6),則可以不需要這行,原因可以參考這裡 https://blog.darkthread.net/blog/disable-tls-1-0-issues
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebRequest request = WebRequest.Create(urlString);
Stream rs = request.GetResponse().GetResponseStream();
StreamReader reader = new StreamReader(rs);
string line = "";
StringBuilder sb = new StringBuilder();
while (line != null)
{
	line = reader.ReadLine();
	if (line != null)
	sb.Append(line);
}
  • 使用 SDK 的方法:
private static readonly Telegram.Bot.TelegramBotClient tg = new Telegram.Bot.TelegramBotClient(apiToken);
var r = tg.SendTextMessageAsync(chatId, txtMessage.Text).Result;上述是傳送文字的方法,其中使用到的參數 apiToken 、 chatId 皆可使用前面的方法取得,參數的型態都可以宣告為 string 。
  • 再來介紹傳送圖片或影片的方法:
private void butSendImage_Click(object sender, EventArgs e)
{
    Stream stream = File.OpenRead(txtImagePath.Text);
    stream.Position = 0;
            
    var r = tg.SendPhotoAsync(chatId, stream).Result;
}

private void butSendVideo_Click(object sender, EventArgs e)
{
    Stream video = File.OpenRead(txtVideoPath.Text);
    video.Position = 0;

    var r = tg.SendVideoAsync(chatId, video).Result;
}
  • C# Windows Application 程式畫面

程式畫面

  • C# Windows Application 程式執行結果

程式執行結果

[Telegram] Telegram(五) 取得 Chat ID

  • 首先,在瀏覽器中輸入「https://api.telegram.org/botToken/getUpdates」,(紅色字體改為由 @BotFather 給予的 token ,取得 token 的方法請參考 [Telegram] Telegram(二) 建立 Bot 機器人 ),則會得到一串的 JSON ,如果得到的是如以下的 JSON ,表示頻道中沒有廣播訊息(好像會以天為單位,前一天就算有廣播訊息,也不會列出)。
{"ok":true,"result":[]}
  • 可先在頻道中輸入「Hello World」,然後再回到前一個步驟,將會得到以下的 JSON:
{"ok":true,"result":[{"update_id":720650387,
"channel_post":{"message_id":22,"chat":{"id":-123456789,"title":"頻道名稱","username":"機器人名稱","type":"channel"},"date":1582014900,"text":"Hello World"}}]}

排序後如下:

{
	"ok":true,
	"result":[
	{
		"update_id":720650387,
		"channel_post":
		{
			"message_id":22,
			"chat":
			{
				"id":-123456789,
				"title":"頻道名稱",
				"username":"機器人名稱",
				"type":"channel"
			},
			"date":1582014900,
			"text":"Hello World"
		}
	}]
}
  • 找到其中的 “chat:” id”:-123456789,就是我們需要的 Chat ID,接著就可以藉著這組 Chat ID ,使用程式來對頻道發送廣播訊息了。
  • 取得 Chat ID 之後,也可以試著在瀏覽器中輸入「https://api.telegram.org/botToken/sendMessage?chat_id=-123456789&text=Hello World」,紅色字體須改為自己的 token ,以及剛剛取得的 Chat ID ,應該就可以順利在頻道中廣播訊息了。

 

[Telegram] Telegram(四) 將 Bot (機器人) 加入 Channel (頻道)

  • 進到頻道的聊天室窗,點擊右邊「加入成員」的圖示。

加入成員

  • 在搜尋欄位輸入 Bot username(機器人的名稱),包含@的符號,例如:@tzuhuabot,找到後,加入他。

查詢機器人

  • Telegram 規定機器人只能是管理員,但還是可以各別給予管理員的權限。

設定管理員

  • 設定機器人的權限,這裡只需要給予「發布訊息」的權限即可。

設定權限

  • 儲存後,就完成將機器人加入頻道的步驟了。
  • 一般如果沒有要寫程式跟 telegram 溝通的話,到這裡使用起來就跟 Line@ 的使用方式差不多了。只是使用 Line@ 的話,一般使用者可以傳送訊息,而 telegram 的頻道不可以,需要另外開一個討論群組才可以雙向溝通。

[Telegram] Telegram(三) 建立 Channel 頻道

因為 Telegram Bot 不能直接私訊給使用者,所以必須透過頻道( Channel)來廣播。不過在頻道中,使用者無法傳訊息的 Telegram Bot ,只能單向的接收 Telegram Bot 廣播的訊息。

  • 在 Telegram 聊天畫面,點擊左上角的選單圖示。

點擊左上角選單

  • 點擊「建立頻道」

建立頻道

  • 輸入「頻道名稱」(必填)及「簡介」(選填)。

輸入頻道名稱及簡介

  • 接著選擇「頻道類型」,因為稍後會需要找 Chat ID,所以暫時先設定為「公開頻道」,再輸入「連結」,可以選擇(輸入)自己喜歡的連結,如果已經被使用了,畫面上會顯示「此連結已被佔用」,就要再選擇其他。日後使用者可以透過這個連結加入頻道。

設定頻道資料

  • 然後可以選擇是否要加入其他使用者到頻道裡,如果不需要則直接「略過」。
  • 頻道建立完成

[Telegram] Telegram(二) 建立 Bot 機器人

要先申請 Telegram 帳號,才可以申請 bot 帳號。

Telegram bot 有兩種,一種是可以對談的機器人,一種是像廣播電台的那種廣播頻道。

對談的機器人就跟 Line Bot 一樣,一來一往的交談,而這樣的交談內容也是根據資料庫而來。

廣播頻道則是只有頻道的管理者可以一直傳送(廣播)資訊,頻道中的成員只能接收,不能發出訊息。

要怎麼建立 Telegram Bot 呢?我個人覺得 Telegram 建立 Bot 的方式很特別,在 Telegram 中搜尋另一個機器人(@BotFather),透過這個機器人來建立使用者的機器人,酷吧!

首先,透過搜尋功能找到 @BotFather

搜尋@BotFather

找到之後就可以跟他對談,點選BotFather之後,會看到:

點選@BotFather

按下開始,@BotFather 會列出交談對話內容,

@BotFather交談內容

對 @BotFather 輸入「/newbot」後,@BotFather 會回問 Bot 的名稱,以及 bot 的 username,需要注意的是 username 必須以 bot 結尾,例如:abcbot 或是 abc_bot,用來區分 bot 和一般的帳號。

以上步驟如果遇到重複的名稱或是 username,@BotFather 都會回復要求重新輸入,直到使用者放棄或是成功輸入正確的資料。

當成功建立後,@BotFather 會給予一個 token (如下圖紅色框),格式會類似123456:ABC123fgsdflgkjk,如此便可使用此 token 透過 HTTPS 發送 Request。

@BotFather新增Bot

[Telegram] Telegram(一) 簡介

Telegram 是做什麼用的?他跟 Line 一樣,都是通訊軟體,可以傳文字、圖片、表情符號、檔案等等,簡單來說,他就跟 Line 一樣。不過,據說三月份開始 Line 的 Line@的費用要增加了,所以許多 Line@ 的使用者(店家),轉而使用 Telegram 。

Telegram 創辦人的故事
http://technews.tw/2016/04/27/pavel-veleryevich-durov-tale-of-the-marvellous/?fbclid=IwAR1HKWn18hjqV6-2TsyH7lBAN6ymCMkeTpMpVfQOYvT6-nZtvCgjzElpWE8

步驟一:
下載Telegram App
( 一開始是英文,後面可以直接改成中文,請先下載英文版 )
安卓手機下載網址
https://telegram.org/dl/android
蘋果手機下載網址
https://telegram.org/dl/ios

步驟二:
輸入電話號碼來註冊,透過簡訊輸入驗證碼。
輸入之後會有一通來自國外的電話(我分別測試了安卓和蘋果手機,只有安卓手機有接到電話,蘋果手機沒有),無需接通,填好驗證碼可進行下一步驟。

步驟三:
註冊完畢後,點擊下方連結就可以中文化Telegram。
https://t.me/setlanguage/taiwan

[生活日常] 直立式滑鼠

無意間發現的直立式滑鼠,好奇之下買來試試。

此款是無線(2.4G)充電式,充電時顯示紅燈,充飽電後顯示綠燈。

還有上一頁、下一頁功能,上方的按鍵是變換DPI(800-1200-1600)。

目前測試的結果是還需要一個滑鼠墊,把手腕處墊高,不然可能手腕還是會有問題。