LazarusでLineBotを作る
API通信で、LineBotを作ってみます。
環境
Ubuntu16
Lazarus 2.0.10
参考ページ
http://lazplanet.blogspot.com/2014/09/a-simple-json-parsing-example.html
必要なデータ
LINE_CHANNEL_ACCESS_TOKEN
LINE_SEND_ID // 1対1の送信で、友達になっている送信先のID
事前準備
パッケージ 「indy」を読み込む
ポイント
・JsonのAPI送信のため、Jsonデータを作成し、Strへ変換が必要
・送信データをTStringStreamで作成する必要がある
・HTTPSであるが、LineAPIの場合、idSSLIOHandlerSocketOpenSSL1なしで送れた
・IdHTTPの場合、usesの設定だけではなく、画面に設置しないとエラーになった
宣言部
uses ,IdHTTP ,fpjson,jsonparser
本体
procedure TForm1.FormCreate(Sender: TObject); begin button1.Caption:='Send'; edit1.Text:='おはよう!!'; //送信メッセージ memo1.Text:=''; //Jsonモニタ用 end; procedure TForm1.Button1Click(Sender: TObject); var ss:TStringStream; st,st1,LINE_CHANNEL_ACCESS_TOKEN,LINE_SEND_ID:string; strm:TStringStream; Data1,Data2 : TJSONObject; JSONArray: TJSONArray; begin LINE_CHANNEL_ACCESS_TOKEN:="YOUR_CHANNEL_ACCESS_TOKEN"; LINE_SEND_ID:="SEND_ID"; IdHTTP1:=TIdHTTP.Create(self); strm:=TStringStream.Create('',TEncoding.UTF8); IdHTTP1.Request.ContentType:='application/json'; IdHTTP1.Request.Accept :='application/json'; IdHTTP1.Request.CustomHeaders.Add('Authorization:Bearer '+LINE_CHANNEL_ACCESS_TOKEN); // https://www.gesource.jp/weblog/?p=6067 // http://lazplanet.blogspot.com/2014/09/a-simple-json-parsing-example.html Data1 := TJSONObject.Create; Data1.Add('type', 'text'); Data1.Add('text', edit1.Text); JSONArray := TJSONArray.Create; JSONArray.Add(Data1); Data2 := TJSONObject.Create; Data2.Add('to', LINE_SEND_ID); Data2.Add('messages', JSONArray); st1:= Data2.AsJSON; Memo1.Lines.Text := st1; ss := TStringStream.Create(st1); ss.Position := 0; st:=IdHTTP1.Post('https://api.line.me/v2/bot/message/push',ss); showmessage('send!!'); end;