本回說明的方法,比上兩回的方法,更方便,更具彈性,使用者可以輕易上手使用LINE訊息推播
2. 作業說明
2.1 使用者作業
使用者將欲傳送資料,包括 (1) 訊息內容,(2) 圖片路徑,(3)群組之權杖,三項資料,於電腦記事本內輸入,當欲傳送訊息時,執行本方法之執行檔後,即可傳出訊息至LINE群組。
使用者可依不同目的需求,自行修改更新文字檔內容。
2.2 執行檔作業
本執行檔其功能是負責取得使用者於文字檔內輸入的三項資料,再將其資料傳至LINE官網,讓LINE Notify 傳出訊息至LINE群組。
3. 處理概要
3.1 使用者於文字檔內,輸入相關資料含三個參數M,I,T 如下說明
M---欲傳送的訊息內容,可多筆輸入
I---欲傳送圖片的路徑,只能輸入1筆。若不傳圖片,不必輸入
T---要接收訊息之群組所代表之權杖(token),需事先取得,可依不同群組,申請個別的權杖
3.2 執行檔之設計
(1) 讀取文字檔內三個參數,針對參數中之訊息內容與圖片路徑做特別處理
(2) 將讀取所得的參數,配置於工具程式curl的命令中,讓訊息內容可以主動推播給所指定的LINE群組
(3) 本執行檔測試成功後,以後每次傳送時,異動之參數資料由使用者輸入於文字檔內後,直接執行本執行檔,不用再修改。
4. 案例演練
4.1假設內容:
某團體之旅遊計畫,欲事先通知LINE群組全員,並附上一張說明圖檔
4.2 準備txt文字檔內容如下:
M:鹽田國小志工隊 113年度旅遊通知
M:地點:清境農場、日月潭 3/24-25 兩天一夜
M:詳細參考記事本,請踴躍參加
I: C:\Users\linct\OneDrive\圖片\螢幕擷取畫面\travel.png
T:iEPX-------targeted token-----q3DuxNuFXOgoWRPQqEal
4.3 於Windows cmd 環境設計本方法之執行檔,執行檔與文字檔兩個檔案存放於同一目錄內
4.4 使用者如何執行?
(1)不定期執行
使用者於電腦手動滑鼠左鍵按兩下本執行檔,便可執行。
(2) 預約執行,定期執行或週期性循環執行
於Windows 工作排程器內設定,讓本執行檔,依排程自動執行,便可以達到LINE自動推播訊息之功能
4.5 執行檔被執行後,指定之LINE群組全員,將會收到推播訊息
本實例收到LINE訊息如下:
5. 設計內容
5.1 欲傳送資料之文字檔,檔名: LINE_curl_par.txt,
內容依需求,每次傳送前確認
5.2 執行檔檔名: LINE_curl_FORf.bat,
經幾次測試與修改,如下bat檔執行後,可以成功傳出LINE訊息
執行檔設計如下:
echo off
REM --- this bat is for posting data to LINE URL
D:
cd D:\lin_PC\cmd-bat\bat\LINE_Notify\curl\
set VarM=
set VarI=" "
set VarT=
if NOT exist "LINE_curl_par.txt" echo ###ERROR para file not exist & goto EOJ
rem **Step 1 --- Read par.txt file only include M I T ; by FOR /F
For /f "tokens=1* delims=:" %%A in ('findstr "M: I: T:" "LINE_curl_par.txt" ') do (CALL :Get3Var %%A "%%B")
:: 當無圖片時,VarI=空白,否則 VarI=@圖片路徑
if NOT %VarI%==" " (set VarI=@%VarI%
) else (set VarI= )
rem **Step 2 --- After getting par data to upload LINE URL; by curl
curl -H "Authorization: Bearer %VarT%" -F "message=%VarM% ---Send on %DATE%" -F "imageFile=%VarI%" https://notify-api.line.me/api/notify
:EOJ
exit
:Get3Var
rem --- %2 因 帶空白值 " x x ",故須先去掉頭尾之 "
set Var=%2
set Var=%Var:~1,-1%
rem --- 取得三個引數值 即varM varI varT
if %1==M (
set VarM=%VarM%%Var%
) else (
if %1==I (
set VarI=%Var%
) else (
if %1==T (
set VarT=%Var%
) else ( echo ###ERROR para data not M:,I:,T: )))
exit /b
----------------recorded by linct----------------------