今までLineに不信感を持っていて使用していなかった。
状況の変化と、利用の注意を怠らないという事で始める。
ゲームの連携でgoogle、Lineなどを使い機種変更しても楽に移行できるのが大きい。
Lineの使い方を検索していて、利用アカウントでtokenを取得するとExcelで指定時間に通知を自分に発信できる事を知った。
メッセージだけではなく、スタンプや画像も送れるという。
これは試すしかないとvisual studioをインストール。
ExcelはVBAで記述だったので、VB.NETでサンプルを作る。
今は作成手順を確認中。
デザインとオブジェクトのアクションを決めれば、プログラムの骨子を排出してくれる。VB.NETだけ?
オリジナリティを出さなければ、データの処理部分を記入するだけで完了のよう。
何に利用できるかはこれから考える。
<2022,5,20 追記>
Line notify 利用でメッセージのみ通知は即完了。
画像付きは難易度アップ。
公式ページの説明は開発者向けで初心者向けではない。
サンプルもほとんど無い。POSTを熟知している人向けだった。
Content-Typeでどちらか使用。
・application/x-www-form-urlencoded
・multipart/form-data
だけど2つの違いの説明なし。
知っていることを前提のようだ^^;
上はテキストオンリーの時。
下はテキスト、バイナリー混合の時に設定。
VB.NET
テキストオンリーならテキストボックスでトークンとメッセージを用意すればOK。
token_TextBox.Text
msg_TextBox.Text
Private Sub send_Line()
Dim xml_http As Object
xml_http = CreateObject("MSXML2.XMLHTTP")
xml_http.Open("POST", "https://notify-api.line.me/api/notify", False)
xml_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
xml_http.setRequestHeader("Authorization", "Bearer " & token_TextBox.Text)
xml_http.send(" message=" & msg_TextBox.Text)
End Sub
送信ボタンをクリックしてプログラムを実行。
すると通知される。
あとは画像だ。
あれ、画像のアップロードが見つからない(;^;
以前、検索で見たと思ったんだけど出てこない…。
xml_http.setRequestHeader("Content-Type", "multipart/form-data")
に変更して、
xml_http.send() を混合データを送信するメソッドに変えれば…。
このクラスに無いよ^^;
別の説明のクラスは複雑だけど、それを使うしかない。
なんか、curl.exeをVB.NETで使用すれば、簡単に画像付き通知ができるけどどうしよう。
<2022,5,21 追記>
フォームのテキストボックスに入力された文字Text。
token_TextBox.Text
msg_TextBox.Text
picturePath_TextBox.Text
Private Sub send_Line()
Shell("curl.exe" &
" -X POST https://notify-api.line.me/api/notify" &
" -H ""Authorization: Bearer """ & token_TextBox.Text &
" -F message=" & msg_TextBox.Text &
" -F imageFile=@" & picturePath_TextBox.Text, vbNormalFocus)
End Sub
win11は"curl.exe"がシステムに入っていてそのまま使えた。
説明の注釈にあったように日本語は文字化け。
苦肉の策。
日本語メッセージのみと半角アルファベット+画像の2方式モードを切り替える。
画像ファイルが存在しなければ、日本語メッセージで送信。
画像ファイルが有れば、半角アルファベット+画像のモード送信とする。
画像パスをチェックして画像ファイルが有れば、ピクチャーボックスに表示。
Private Sub picturePath_TextBox_TextChanged(sender As Object, e As EventArgs) Handles picturePath_TextBox.TextChanged
If My.Computer.FileSystem.FileExists(picturePath_TextBox.Text) And
Me.picturePath_TextBox.Text.IndexOf(".jpg", StringComparison.OrdinalIgnoreCase) >= 0 Then
PictureBox1.ImageLocation = picturePath_TextBox.Text
ElseIf Not (PictureBox1.Image Is Nothing) Then
PictureBox1.Image.Dispose()
PictureBox1.Image = Nothing
End If
End Sub
画像の有無で送信方法を変える。
文字のみは日本語表示OK。
Private Sub send_Line()
If (PictureBox1.Image Is Nothing) Then
Dim xml_http As Object
xml_http = CreateObject("MSXML2.XMLHTTP")
xml_http.Open("POST", "https://notify-api.line.me/api/notify", False)
xml_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
xml_http.setRequestHeader("Authorization", "Bearer " & token_TextBox.Text)
xml_http.send(" message=" & msg_TextBox.Text)
Else
Shell("curl.exe" &
" -X POST https://notify-api.line.me/api/notify" &
" -H ""Authorization: Bearer """ & token_TextBox.Text &
" -F message=" & msg_TextBox.Text &
" -F imageFile=@" & picturePath_TextBox.Text, vbNormalFocus)
End If
End Sub
複雑なクラスを使えば、日本語メッセージ+画像送信ができそう。
面倒なのであとで…。