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;