[{"data":1,"prerenderedAt":2125},["ShallowReactive",2],{"h3753939646":3,"h1952995411":1254,"h304575742":2116},{"id":4,"title":5,"body":6,"description":28,"extension":1245,"meta":1246,"navigation":370,"path":1250,"seo":1251,"stem":1252,"__hash__":1253},"docs\u002Fja\u002Ftips\u002F2026\u002F10\u002F01\u002Fmessaging-api-bot-cloudflare-hono.md","Cloudflare+HonoでMessaging APIのボットを動かしてみる",{"type":7,"value":8,"toc":1222},"minimark",[9],[10,11,12,20,25,29,46,55,58,63,66,129,133,136,167,170,208,211,238,257,298,302,309,312,959,963,966,1005,1018,1024,1128,1132,1135,1152,1159,1163,1183,1192,1195,1202,1205,1209,1212,1216],"Tips",{},[13,14,17],"h1",{"id":15,"class":16},"","!mb-4",[18,19],"page-title",{},[21,22],"display-date",{"date":23,"class":24},"2026\u002F10\u002F01","!mb-20",[26,27,28],"p",{},"こんにちは！LINE Developersサイトの運営を担当している、テクニカルライターの銭神です。みなさんは、どのような環境でMessaging APIのボットを動かしているでしょうか。",[26,30,31,32,39,40,45],{},"最近の代表的な構成のひとつに",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fwww.cloudflare.com\u002Fja-jp\u002F",[37],"nofollow","Cloudflare","+",[33,41,44],{"href":42,"rel":43},"https:\u002F\u002Fhono.dev\u002F",[37],"Hono","がありますが、この構成でもボットを動かすことができます。この記事では、Cloudflare+Honoでボットを動かすための最低限の手順を紹介します。",[26,47,48,49,54],{},"なお、デプロイ先となるCloudflare Workersには",[33,50,53],{"href":51,"rel":52},"https:\u002F\u002Fwww.cloudflare.com\u002Fja-jp\u002Fplans\u002Fdeveloper-platform\u002F#workers",[37],"無料枠","があるため、今回の手順はすべて無料で試せます。",[56,57],"toc",{},[59,60,62],"h2",{"id":61},"environment","動作環境",[26,64,65],{},"この記事の内容は、以下の環境において動作することを確認しています。",[67,68,69,82],"table",{},[70,71,72],"thead",{},[73,74,75,79],"tr",{},[76,77,78],"th",{},"名前",[76,80,81],{},"バージョン",[83,84,85,94,102,109,117],"tbody",{},[73,86,87,91],{},[88,89,90],"td",{},"Node.js",[88,92,93],{},"v26.8.1",[73,95,96,99],{},[88,97,98],{},"create-hono",[88,100,101],{},"0.19.5",[73,103,104,106],{},[88,105,44],{},[88,107,108],{},"4.13.9",[73,110,111,114],{},[88,112,113],{},"Wrangler",[88,115,116],{},"4.144.0",[73,118,119,126],{},[88,120,121],{},[33,122,125],{"href":123,"rel":124},"https:\u002F\u002Fgithub.com\u002Fline\u002Fline-bot-sdk-nodejs",[37],"LINE Messaging API SDK for Node.js",[88,127,128],{},"11.2.0",[59,130,132],{"id":131},"create-project","プロジェクトを作成する",[26,134,135],{},"まず、ウェブフレームワークであるHonoが提供するテンプレートを使用して、プロジェクトを初期化します。プロジェクトを初期化するには、以下のコマンドを実行します。",[137,138,142],"pre",{"className":139,"code":140,"language":141,"meta":15,"style":15},"language-bash shiki shiki-themes github-dark-default","$ npm create hono@latest my-line-bot\n","bash",[143,144,145],"code",{"__ignoreMap":15},[146,147,150,154,158,161,164],"span",{"class":148,"line":149},"line",1,[146,151,153],{"class":152},"sQhOw","$",[146,155,157],{"class":156},"s9uIt"," npm",[146,159,160],{"class":156}," create",[146,162,163],{"class":156}," hono@latest",[146,165,166],{"class":156}," my-line-bot\n",[26,168,169],{},"コマンドを実行すると、いくつか質問されます。これらには、以下の内容で回答します。",[67,171,172,182],{},[70,173,174],{},[73,175,176,179],{},[76,177,178],{},"質問",[76,180,181],{},"回答",[83,183,184,192,200],{},[73,185,186,189],{},[88,187,188],{},"Which template do you want to use?",[88,190,191],{},"cloudflare-workers",[73,193,194,197],{},[88,195,196],{},"Do you want to install project dependencies?",[88,198,199],{},"Yes",[73,201,202,205],{},[88,203,204],{},"Which package manager do you want to use?",[88,206,207],{},"npm",[26,209,210],{},"また、LINE Messaging API SDK for Node.jsをインストールします。これを用いることで、署名の検証やメッセージの送信などが簡単にできるようになります。",[137,212,214],{"className":139,"code":213,"language":141,"meta":15,"style":15},"$ cd my-line-bot\n$ npm install @line\u002Fbot-sdk\n",[143,215,216,225],{"__ignoreMap":15},[146,217,218,220,223],{"class":148,"line":149},[146,219,153],{"class":152},[146,221,222],{"class":156}," cd",[146,224,166],{"class":156},[146,226,228,230,232,235],{"class":148,"line":227},2,[146,229,153],{"class":152},[146,231,157],{"class":156},[146,233,234],{"class":156}," install",[146,236,237],{"class":156}," @line\u002Fbot-sdk\n",[26,239,240,241,244,245,248,249,252,253,256],{},"次に、生成された",[143,242,243],{},"wrangler.jsonc","を開きます。",[143,246,247],{},"compatibility_date","の末尾にカンマを追加し、",[143,250,251],{},"compatibility_flags","のコメントアウトを外します。SDKの署名検証にはNode.jsの",[143,254,255],{},"crypto","モジュールを使用するため、コメントアウトを外してNode.jsの互換モードにします。",[137,258,262],{"className":259,"code":260,"language":261,"meta":15,"style":15},"language-jsonc shiki shiki-themes github-dark-default","\u002F\u002F 末尾のカンマを追加する\n\"compatibility_date\": \"2026-09-30\",\n\u002F\u002F コメントアウトを外す\n\"compatibility_flags\": [\n  \"nodejs_compat\"\n],\n","jsonc",[143,263,264,269,274,280,286,292],{"__ignoreMap":15},[146,265,266],{"class":148,"line":149},[146,267,268],{},"\u002F\u002F 末尾のカンマを追加する\n",[146,270,271],{"class":148,"line":227},[146,272,273],{},"\"compatibility_date\": \"2026-09-30\",\n",[146,275,277],{"class":148,"line":276},3,[146,278,279],{},"\u002F\u002F コメントアウトを外す\n",[146,281,283],{"class":148,"line":282},4,[146,284,285],{},"\"compatibility_flags\": [\n",[146,287,289],{"class":148,"line":288},5,[146,290,291],{},"  \"nodejs_compat\"\n",[146,293,295],{"class":148,"line":294},6,[146,296,297],{},"],\n",[59,299,301],{"id":300},"implement-application","アプリケーションを実装する",[26,303,304,305,308],{},"それでは、アプリケーションを実装していきます。",[143,306,307],{},"src\u002Findex.ts","を開いて、以下のコードに置き換えます。",[26,310,311],{},"このアプリケーションでは、ユーザーがLINE公式アカウントにメッセージを送ったときに、その内容をそのままオウム返し🦜しています。",[137,313,317],{"className":314,"code":315,"language":316,"meta":15,"style":15},"language-ts shiki shiki-themes github-dark-default","import { Hono } from \"hono\";\nimport { HTTPException } from \"hono\u002Fhttp-exception\";\nimport { messagingApi, validateSignature, webhook } from \"@line\u002Fbot-sdk\";\n\ntype Bindings = {\n  CHANNEL_ACCESS_TOKEN: string;\n  CHANNEL_SECRET: string;\n};\n\nconst app = new Hono\u003C{ Bindings: Bindings }>();\n\napp.post(\"\u002Fwebhook\", async (c) => {\n  const body = await c.req.text();\n  const signature = c.req.header(\"x-line-signature\");\n\n  \u002F\u002F 署名を検証する\n  if (!signature || !validateSignature(body, c.env.CHANNEL_SECRET, signature)) {\n    throw new HTTPException(401, { message: \"Unauthorized\" });\n  }\n\n  const client = new messagingApi.MessagingApiClient({\n    channelAccessToken: c.env.CHANNEL_ACCESS_TOKEN,\n  });\n\n  const data: webhook.CallbackRequest = JSON.parse(body);\n\n  for (const event of data.events) {\n    if (\n      event.type === \"message\" &&\n      event.message.type === \"text\" &&\n      event.replyToken\n    ) {\n      try {\n        await client.replyMessage({\n          replyToken: event.replyToken,\n          messages: [\n            {\n              type: \"text\",\n              text: event.message.text,\n            },\n          ],\n        });\n      } catch (error) {\n        throw new HTTPException(500, {\n          message: \"Reply API Error\",\n          cause: error,\n        });\n      }\n    }\n  }\n\n  return c.text(\"OK\");\n});\n\nexport default app;\n","ts",[143,318,319,338,352,366,372,386,400,412,418,423,454,459,494,517,540,545,552,584,609,615,620,641,653,659,664,696,701,720,729,744,757,763,769,777,791,797,803,809,820,826,832,838,844,856,874,885,891,896,902,908,913,918,936,942,947],{"__ignoreMap":15},[146,320,321,325,329,332,335],{"class":148,"line":149},[146,322,324],{"class":323},"suJrU","import",[146,326,328],{"class":327},"sZEs4"," { Hono } ",[146,330,331],{"class":323},"from",[146,333,334],{"class":156}," \"hono\"",[146,336,337],{"class":327},";\n",[146,339,340,342,345,347,350],{"class":148,"line":227},[146,341,324],{"class":323},[146,343,344],{"class":327}," { HTTPException } ",[146,346,331],{"class":323},[146,348,349],{"class":156}," \"hono\u002Fhttp-exception\"",[146,351,337],{"class":327},[146,353,354,356,359,361,364],{"class":148,"line":276},[146,355,324],{"class":323},[146,357,358],{"class":327}," { messagingApi, validateSignature, webhook } ",[146,360,331],{"class":323},[146,362,363],{"class":156}," \"@line\u002Fbot-sdk\"",[146,365,337],{"class":327},[146,367,368],{"class":148,"line":282},[146,369,371],{"emptyLinePlaceholder":370},true,"\n",[146,373,374,377,380,383],{"class":148,"line":288},[146,375,376],{"class":323},"type",[146,378,379],{"class":152}," Bindings",[146,381,382],{"class":323}," =",[146,384,385],{"class":327}," {\n",[146,387,388,391,394,398],{"class":148,"line":294},[146,389,390],{"class":152},"  CHANNEL_ACCESS_TOKEN",[146,392,393],{"class":323},":",[146,395,397],{"class":396},"sFSAA"," string",[146,399,337],{"class":327},[146,401,403,406,408,410],{"class":148,"line":402},7,[146,404,405],{"class":152},"  CHANNEL_SECRET",[146,407,393],{"class":323},[146,409,397],{"class":396},[146,411,337],{"class":327},[146,413,415],{"class":148,"line":414},8,[146,416,417],{"class":327},"};\n",[146,419,421],{"class":148,"line":420},9,[146,422,371],{"emptyLinePlaceholder":370},[146,424,426,429,432,434,437,441,444,447,449,451],{"class":148,"line":425},10,[146,427,428],{"class":323},"const",[146,430,431],{"class":396}," app",[146,433,382],{"class":323},[146,435,436],{"class":323}," new",[146,438,440],{"class":439},"sc3cj"," Hono",[146,442,443],{"class":327},"\u003C{ ",[146,445,446],{"class":152},"Bindings",[146,448,393],{"class":323},[146,450,379],{"class":152},[146,452,453],{"class":327}," }>();\n",[146,455,457],{"class":148,"line":456},11,[146,458,371],{"emptyLinePlaceholder":370},[146,460,462,465,468,471,474,477,480,483,486,489,492],{"class":148,"line":461},12,[146,463,464],{"class":327},"app.",[146,466,467],{"class":439},"post",[146,469,470],{"class":327},"(",[146,472,473],{"class":156},"\"\u002Fwebhook\"",[146,475,476],{"class":327},", ",[146,478,479],{"class":323},"async",[146,481,482],{"class":327}," (",[146,484,485],{"class":152},"c",[146,487,488],{"class":327},") ",[146,490,491],{"class":323},"=>",[146,493,385],{"class":327},[146,495,497,500,503,505,508,511,514],{"class":148,"line":496},13,[146,498,499],{"class":323},"  const",[146,501,502],{"class":396}," body",[146,504,382],{"class":323},[146,506,507],{"class":323}," await",[146,509,510],{"class":327}," c.req.",[146,512,513],{"class":439},"text",[146,515,516],{"class":327},"();\n",[146,518,520,522,525,527,529,532,534,537],{"class":148,"line":519},14,[146,521,499],{"class":323},[146,523,524],{"class":396}," signature",[146,526,382],{"class":323},[146,528,510],{"class":327},[146,530,531],{"class":439},"header",[146,533,470],{"class":327},[146,535,536],{"class":156},"\"x-line-signature\"",[146,538,539],{"class":327},");\n",[146,541,543],{"class":148,"line":542},15,[146,544,371],{"emptyLinePlaceholder":370},[146,546,548],{"class":148,"line":547},16,[146,549,551],{"class":550},"sH3jZ","  \u002F\u002F 署名を検証する\n",[146,553,555,558,560,563,566,569,572,575,578,581],{"class":148,"line":554},17,[146,556,557],{"class":323},"  if",[146,559,482],{"class":327},[146,561,562],{"class":323},"!",[146,564,565],{"class":327},"signature ",[146,567,568],{"class":323},"||",[146,570,571],{"class":323}," !",[146,573,574],{"class":439},"validateSignature",[146,576,577],{"class":327},"(body, c.env.",[146,579,580],{"class":396},"CHANNEL_SECRET",[146,582,583],{"class":327},", signature)) {\n",[146,585,587,590,592,595,597,600,603,606],{"class":148,"line":586},18,[146,588,589],{"class":323},"    throw",[146,591,436],{"class":323},[146,593,594],{"class":439}," HTTPException",[146,596,470],{"class":327},[146,598,599],{"class":396},"401",[146,601,602],{"class":327},", { message: ",[146,604,605],{"class":156},"\"Unauthorized\"",[146,607,608],{"class":327}," });\n",[146,610,612],{"class":148,"line":611},19,[146,613,614],{"class":327},"  }\n",[146,616,618],{"class":148,"line":617},20,[146,619,371],{"emptyLinePlaceholder":370},[146,621,623,625,628,630,632,635,638],{"class":148,"line":622},21,[146,624,499],{"class":323},[146,626,627],{"class":396}," client",[146,629,382],{"class":323},[146,631,436],{"class":323},[146,633,634],{"class":327}," messagingApi.",[146,636,637],{"class":439},"MessagingApiClient",[146,639,640],{"class":327},"({\n",[146,642,644,647,650],{"class":148,"line":643},22,[146,645,646],{"class":327},"    channelAccessToken: c.env.",[146,648,649],{"class":396},"CHANNEL_ACCESS_TOKEN",[146,651,652],{"class":327},",\n",[146,654,656],{"class":148,"line":655},23,[146,657,658],{"class":327},"  });\n",[146,660,662],{"class":148,"line":661},24,[146,663,371],{"emptyLinePlaceholder":370},[146,665,667,669,672,674,677,680,683,685,688,690,693],{"class":148,"line":666},25,[146,668,499],{"class":323},[146,670,671],{"class":396}," data",[146,673,393],{"class":323},[146,675,676],{"class":152}," webhook",[146,678,679],{"class":327},".",[146,681,682],{"class":152},"CallbackRequest",[146,684,382],{"class":323},[146,686,687],{"class":396}," JSON",[146,689,679],{"class":327},[146,691,692],{"class":439},"parse",[146,694,695],{"class":327},"(body);\n",[146,697,699],{"class":148,"line":698},26,[146,700,371],{"emptyLinePlaceholder":370},[146,702,704,707,709,711,714,717],{"class":148,"line":703},27,[146,705,706],{"class":323},"  for",[146,708,482],{"class":327},[146,710,428],{"class":323},[146,712,713],{"class":396}," event",[146,715,716],{"class":323}," of",[146,718,719],{"class":327}," data.events) {\n",[146,721,723,726],{"class":148,"line":722},28,[146,724,725],{"class":323},"    if",[146,727,728],{"class":327}," (\n",[146,730,732,735,738,741],{"class":148,"line":731},29,[146,733,734],{"class":327},"      event.type ",[146,736,737],{"class":323},"===",[146,739,740],{"class":156}," \"message\"",[146,742,743],{"class":323}," &&\n",[146,745,747,750,752,755],{"class":148,"line":746},30,[146,748,749],{"class":327},"      event.message.type ",[146,751,737],{"class":323},[146,753,754],{"class":156}," \"text\"",[146,756,743],{"class":323},[146,758,760],{"class":148,"line":759},31,[146,761,762],{"class":327},"      event.replyToken\n",[146,764,766],{"class":148,"line":765},32,[146,767,768],{"class":327},"    ) {\n",[146,770,772,775],{"class":148,"line":771},33,[146,773,774],{"class":323},"      try",[146,776,385],{"class":327},[146,778,780,783,786,789],{"class":148,"line":779},34,[146,781,782],{"class":323},"        await",[146,784,785],{"class":327}," client.",[146,787,788],{"class":439},"replyMessage",[146,790,640],{"class":327},[146,792,794],{"class":148,"line":793},35,[146,795,796],{"class":327},"          replyToken: event.replyToken,\n",[146,798,800],{"class":148,"line":799},36,[146,801,802],{"class":327},"          messages: [\n",[146,804,806],{"class":148,"line":805},37,[146,807,808],{"class":327},"            {\n",[146,810,812,815,818],{"class":148,"line":811},38,[146,813,814],{"class":327},"              type: ",[146,816,817],{"class":156},"\"text\"",[146,819,652],{"class":327},[146,821,823],{"class":148,"line":822},39,[146,824,825],{"class":327},"              text: event.message.text,\n",[146,827,829],{"class":148,"line":828},40,[146,830,831],{"class":327},"            },\n",[146,833,835],{"class":148,"line":834},41,[146,836,837],{"class":327},"          ],\n",[146,839,841],{"class":148,"line":840},42,[146,842,843],{"class":327},"        });\n",[146,845,847,850,853],{"class":148,"line":846},43,[146,848,849],{"class":327},"      } ",[146,851,852],{"class":323},"catch",[146,854,855],{"class":327}," (error) {\n",[146,857,859,862,864,866,868,871],{"class":148,"line":858},44,[146,860,861],{"class":323},"        throw",[146,863,436],{"class":323},[146,865,594],{"class":439},[146,867,470],{"class":327},[146,869,870],{"class":396},"500",[146,872,873],{"class":327},", {\n",[146,875,877,880,883],{"class":148,"line":876},45,[146,878,879],{"class":327},"          message: ",[146,881,882],{"class":156},"\"Reply API Error\"",[146,884,652],{"class":327},[146,886,888],{"class":148,"line":887},46,[146,889,890],{"class":327},"          cause: error,\n",[146,892,894],{"class":148,"line":893},47,[146,895,843],{"class":327},[146,897,899],{"class":148,"line":898},48,[146,900,901],{"class":327},"      }\n",[146,903,905],{"class":148,"line":904},49,[146,906,907],{"class":327},"    }\n",[146,909,911],{"class":148,"line":910},50,[146,912,614],{"class":327},[146,914,916],{"class":148,"line":915},51,[146,917,371],{"emptyLinePlaceholder":370},[146,919,921,924,927,929,931,934],{"class":148,"line":920},52,[146,922,923],{"class":323},"  return",[146,925,926],{"class":327}," c.",[146,928,513],{"class":439},[146,930,470],{"class":327},[146,932,933],{"class":156},"\"OK\"",[146,935,539],{"class":327},[146,937,939],{"class":148,"line":938},53,[146,940,941],{"class":327},"});\n",[146,943,945],{"class":148,"line":944},54,[146,946,371],{"emptyLinePlaceholder":370},[146,948,950,953,956],{"class":148,"line":949},55,[146,951,952],{"class":323},"export",[146,954,955],{"class":323}," default",[146,957,958],{"class":327}," app;\n",[59,960,962],{"id":961},"set-environment-variables","環境変数を設定する",[26,964,965],{},"アプリケーションの実装が終わったら、いよいよアプリケーションをデプロイするのですが、その前に以下のコマンドで環境変数を設定します。コマンド実行時にCloudflareへのログインを求められた場合は、そのままログインを済ませてください。",[137,967,969],{"className":139,"code":968,"language":141,"meta":15,"style":15},"$ npx wrangler secret put CHANNEL_ACCESS_TOKEN\n$ npx wrangler secret put CHANNEL_SECRET\n",[143,970,971,990],{"__ignoreMap":15},[146,972,973,975,978,981,984,987],{"class":148,"line":149},[146,974,153],{"class":152},[146,976,977],{"class":156}," npx",[146,979,980],{"class":156}," wrangler",[146,982,983],{"class":156}," secret",[146,985,986],{"class":156}," put",[146,988,989],{"class":156}," CHANNEL_ACCESS_TOKEN\n",[146,991,992,994,996,998,1000,1002],{"class":148,"line":227},[146,993,153],{"class":152},[146,995,977],{"class":156},[146,997,980],{"class":156},[146,999,983],{"class":156},[146,1001,986],{"class":156},[146,1003,1004],{"class":156}," CHANNEL_SECRET\n",[26,1006,1007,1008,1012,1013,1017],{},"チャネルアクセストークンとチャネルシークレットは、",[33,1009,1011],{"href":1010},"\u002Fconsole\u002F","LINE Developersコンソール","のMessaging APIチャネルで確認できます。Messaging APIチャネルをまだ作成していない場合は、「",[33,1014,1016],{"href":1015},"\u002Fdocs\u002Fmessaging-api\u002Fgetting-started\u002F","Messaging APIを始めよう","」を参考に作成します。",[26,1019,1020,1021,1023],{},"たとえば",[143,1022,649],{},"を設定するときは、以下のようになります。コマンドの実行時点ではまだCloudflare上にWorkerがないため、以下のようにWorkerを作成するかどうかの質問もされます。",[137,1025,1027],{"className":139,"code":1026,"language":141,"meta":15,"style":15},"$ npx wrangler secret put CHANNEL_ACCESS_TOKEN\n\n ⛅️ wrangler 4.144.0\n───────────────────────────────────────────────\n✔ Enter a secret value: … ****\n🌀 Creating the secret for the Worker \"my-line-bot\"\n✔ There doesn't seem to be a Worker called \"my-line-bot\". Do you want to create a new Worker with that name and add secrets to it? … yes\n🌀 Creating new Worker \"my-line-bot\"...\n✨ Success! Uploaded secret CHANNEL_ACCESS_TOKEN\n",[143,1028,1029,1043,1047,1057,1062,1084,1108,1118,1123],{"__ignoreMap":15},[146,1030,1031,1033,1035,1037,1039,1041],{"class":148,"line":149},[146,1032,153],{"class":152},[146,1034,977],{"class":156},[146,1036,980],{"class":156},[146,1038,983],{"class":156},[146,1040,986],{"class":156},[146,1042,989],{"class":156},[146,1044,1045],{"class":148,"line":227},[146,1046,371],{"emptyLinePlaceholder":370},[146,1048,1049,1052,1054],{"class":148,"line":276},[146,1050,1051],{"class":152}," ⛅️",[146,1053,980],{"class":156},[146,1055,1056],{"class":396}," 4.144.0\n",[146,1058,1059],{"class":148,"line":282},[146,1060,1061],{"class":152},"───────────────────────────────────────────────\n",[146,1063,1064,1067,1070,1073,1075,1078,1081],{"class":148,"line":288},[146,1065,1066],{"class":152},"✔",[146,1068,1069],{"class":156}," Enter",[146,1071,1072],{"class":156}," a",[146,1074,983],{"class":156},[146,1076,1077],{"class":156}," value:",[146,1079,1080],{"class":156}," …",[146,1082,1083],{"class":396}," ****\n",[146,1085,1086,1089,1092,1095,1097,1100,1102,1105],{"class":148,"line":294},[146,1087,1088],{"class":152},"🌀",[146,1090,1091],{"class":156}," Creating",[146,1093,1094],{"class":156}," the",[146,1096,983],{"class":156},[146,1098,1099],{"class":156}," for",[146,1101,1094],{"class":156},[146,1103,1104],{"class":156}," Worker",[146,1106,1107],{"class":156}," \"my-line-bot\"\n",[146,1109,1110,1112,1115],{"class":148,"line":402},[146,1111,1066],{"class":152},[146,1113,1114],{"class":156}," There",[146,1116,1117],{"class":156}," doesn't seem to be a Worker called \"my-line-bot\". Do you want to create a new Worker with that name and add secrets to it? … yes\n",[146,1119,1120],{"class":148,"line":414},[146,1121,1122],{"class":156},"🌀 Creating new Worker \"my-line-bot\"...\n",[146,1124,1125],{"class":148,"line":420},[146,1126,1127],{"class":156},"✨ Success! Uploaded secret CHANNEL_ACCESS_TOKEN\n",[59,1129,1131],{"id":1130},"deploy","デプロイする",[26,1133,1134],{},"環境変数を設定したら、アプリケーションをデプロイします。デプロイは、次のコマンドでできます。",[137,1136,1138],{"className":139,"code":1137,"language":141,"meta":15,"style":15},"$ npm run deploy\n",[143,1139,1140],{"__ignoreMap":15},[146,1141,1142,1144,1146,1149],{"class":148,"line":149},[146,1143,153],{"class":152},[146,1145,157],{"class":156},[146,1147,1148],{"class":156}," run",[146,1150,1151],{"class":156}," deploy\n",[26,1153,1154,1155,1158],{},"デプロイが完了すると、コマンドの実行結果としてデプロイ先のURLが",[143,1156,1157],{},"https:\u002F\u002Fmy-line-bot.\u003CYOUR_SUBDOMAIN>.workers.dev","のように表示されます。",[59,1160,1162],{"id":1161},"check-behavior","動作を確認する",[26,1164,1165,1166,1169,1170,1174,1175,1178,1179,1182],{},"アプリケーションをデプロイしたら、デプロイ先のURLの末尾に",[143,1167,1168],{},"\u002Fwebhook","をつけたURLをLINE Developersコンソールに登録します。Messaging APIチャネルを開き、［",[1171,1172,1173],"strong",{},"Messaging API設定","］タブの［",[1171,1176,1177],{},"Webhook URL","］にURLを入力して、［",[1171,1180,1181],{},"Webhookの利用","］を有効にします。",[26,1184,1185],{},[1186,1187],"img",{"alt":15,"className":1188,"src":1191},[1189,1190],"border","w-fix-480","\u002Fmedia\u002Ftips\u002F2026\u002Fcloudflare-hono-webhook-url-ja.png",[26,1193,1194],{},"ここまできたら、準備は完了です。LINE公式アカウントを開いて、なにか適当な文字を送ってみます。",[26,1196,1197],{},[1186,1198],{"alt":15,"className":1199,"src":1201},[1189,1200],"w-fix-320","\u002Fmedia\u002Ftips\u002F2026\u002Fcloudflare-hono-oa.png",[26,1203,1204],{},"このように、送った文字と同じ文字がLINE公式アカウントから返ってきたら成功です。",[59,1206,1208],{"id":1207},"conclusion","おわりに",[26,1210,1211],{},"以上のように、CloudflareとHonoを使うことで、Messaging APIを簡単に動かすことができます。どこで動かすか悩んだときは、ぜひ参考にしてみてください。",[1213,1214,1215],"style",{},"html pre.shiki code .sQhOw, html code.shiki .sQhOw{--shiki-default:#FFA657}html pre.shiki code .s9uIt, html code.shiki .s9uIt{--shiki-default:#A5D6FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .suJrU, html code.shiki .suJrU{--shiki-default:#FF7B72}html pre.shiki code .sZEs4, html code.shiki .sZEs4{--shiki-default:#E6EDF3}html pre.shiki code .sFSAA, html code.shiki .sFSAA{--shiki-default:#79C0FF}html pre.shiki code .sc3cj, html code.shiki .sc3cj{--shiki-default:#D2A8FF}html pre.shiki code .sH3jZ, html code.shiki .sH3jZ{--shiki-default:#8B949E}",[1217,1218],"tags",{"tags":1219,"lang":1220,"section":1221},"messaging-api","en","tips",{"title":15,"searchDepth":282,"depth":288,"links":1223},[1224,1227,1230,1233,1236,1239,1242],{"id":1225,"depth":227,"text":1226},"動作環境-environment","動作環境 {#environment}",{"id":1228,"depth":227,"text":1229},"プロジェクトを作成する-create-project","プロジェクトを作成する {#create-project}",{"id":1231,"depth":227,"text":1232},"アプリケーションを実装する-implement-application","アプリケーションを実装する {#implement-application}",{"id":1234,"depth":227,"text":1235},"環境変数を設定する-set-environment-variables","環境変数を設定する {#set-environment-variables}",{"id":1237,"depth":227,"text":1238},"デプロイする-deploy","デプロイする {#deploy}",{"id":1240,"depth":227,"text":1241},"動作を確認する-check-behavior","動作を確認する {#check-behavior}",{"id":1243,"depth":227,"text":1244},"おわりに-conclusion","おわりに {#conclusion}","md",{"date":1247,"tags":1219,"locale":1248,"sidebar":1249},"2026-10-01 00:00 UTC","ja",false,"\u002Fja\u002Ftips\u002F2026\u002F10\u002F01\u002Fmessaging-api-bot-cloudflare-hono",{"title":5,"description":28},"ja\u002Ftips\u002F2026\u002F10\u002F01\u002Fmessaging-api-bot-cloudflare-hono","s7vIHfBt4K7rwTYzGdGsySl8polx41HK-moS2s2cdJQ",{"id":4,"title":5,"body":1255,"description":28,"extension":1245,"meta":2114,"navigation":370,"path":1250,"seo":2115,"stem":1252,"__hash__":1253},{"type":7,"value":1256,"toc":2105},[1257],[10,1258,1259,1263,1265,1267,1275,1280,1282,1284,1286,1331,1333,1335,1351,1353,1383,1385,1407,1417,1445,1447,1451,1453,1919,1921,1923,1955,1961,1965,2049,2051,2053,2067,2071,2073,2083,2088,2090,2095,2097,2099,2101,2103],{},[13,1260,1261],{"id":15,"class":16},[18,1262],{},[21,1264],{"date":23,"class":24},[26,1266,28],{},[26,1268,31,1269,39,1272,45],{},[33,1270,38],{"href":35,"rel":1271},[37],[33,1273,44],{"href":42,"rel":1274},[37],[26,1276,48,1277,54],{},[33,1278,53],{"href":51,"rel":1279},[37],[56,1281],{},[59,1283,62],{"id":61},[26,1285,65],{},[67,1287,1288,1296],{},[70,1289,1290],{},[73,1291,1292,1294],{},[76,1293,78],{},[76,1295,81],{},[83,1297,1298,1304,1310,1316,1322],{},[73,1299,1300,1302],{},[88,1301,90],{},[88,1303,93],{},[73,1305,1306,1308],{},[88,1307,98],{},[88,1309,101],{},[73,1311,1312,1314],{},[88,1313,44],{},[88,1315,108],{},[73,1317,1318,1320],{},[88,1319,113],{},[88,1321,116],{},[73,1323,1324,1329],{},[88,1325,1326],{},[33,1327,125],{"href":123,"rel":1328},[37],[88,1330,128],{},[59,1332,132],{"id":131},[26,1334,135],{},[137,1336,1337],{"className":139,"code":140,"language":141,"meta":15,"style":15},[143,1338,1339],{"__ignoreMap":15},[146,1340,1341,1343,1345,1347,1349],{"class":148,"line":149},[146,1342,153],{"class":152},[146,1344,157],{"class":156},[146,1346,160],{"class":156},[146,1348,163],{"class":156},[146,1350,166],{"class":156},[26,1352,169],{},[67,1354,1355,1363],{},[70,1356,1357],{},[73,1358,1359,1361],{},[76,1360,178],{},[76,1362,181],{},[83,1364,1365,1371,1377],{},[73,1366,1367,1369],{},[88,1368,188],{},[88,1370,191],{},[73,1372,1373,1375],{},[88,1374,196],{},[88,1376,199],{},[73,1378,1379,1381],{},[88,1380,204],{},[88,1382,207],{},[26,1384,210],{},[137,1386,1387],{"className":139,"code":213,"language":141,"meta":15,"style":15},[143,1388,1389,1397],{"__ignoreMap":15},[146,1390,1391,1393,1395],{"class":148,"line":149},[146,1392,153],{"class":152},[146,1394,222],{"class":156},[146,1396,166],{"class":156},[146,1398,1399,1401,1403,1405],{"class":148,"line":227},[146,1400,153],{"class":152},[146,1402,157],{"class":156},[146,1404,234],{"class":156},[146,1406,237],{"class":156},[26,1408,240,1409,244,1411,248,1413,252,1415,256],{},[143,1410,243],{},[143,1412,247],{},[143,1414,251],{},[143,1416,255],{},[137,1418,1419],{"className":259,"code":260,"language":261,"meta":15,"style":15},[143,1420,1421,1425,1429,1433,1437,1441],{"__ignoreMap":15},[146,1422,1423],{"class":148,"line":149},[146,1424,268],{},[146,1426,1427],{"class":148,"line":227},[146,1428,273],{},[146,1430,1431],{"class":148,"line":276},[146,1432,279],{},[146,1434,1435],{"class":148,"line":282},[146,1436,285],{},[146,1438,1439],{"class":148,"line":288},[146,1440,291],{},[146,1442,1443],{"class":148,"line":294},[146,1444,297],{},[59,1446,301],{"id":300},[26,1448,304,1449,308],{},[143,1450,307],{},[26,1452,311],{},[137,1454,1455],{"className":314,"code":315,"language":316,"meta":15,"style":15},[143,1456,1457,1469,1481,1493,1497,1507,1517,1527,1531,1535,1557,1561,1585,1601,1619,1623,1627,1649,1667,1671,1675,1691,1699,1703,1707,1731,1735,1749,1755,1765,1775,1779,1783,1789,1799,1803,1807,1811,1819,1823,1827,1831,1835,1843,1857,1865,1869,1873,1877,1881,1885,1889,1903,1907,1911],{"__ignoreMap":15},[146,1458,1459,1461,1463,1465,1467],{"class":148,"line":149},[146,1460,324],{"class":323},[146,1462,328],{"class":327},[146,1464,331],{"class":323},[146,1466,334],{"class":156},[146,1468,337],{"class":327},[146,1470,1471,1473,1475,1477,1479],{"class":148,"line":227},[146,1472,324],{"class":323},[146,1474,344],{"class":327},[146,1476,331],{"class":323},[146,1478,349],{"class":156},[146,1480,337],{"class":327},[146,1482,1483,1485,1487,1489,1491],{"class":148,"line":276},[146,1484,324],{"class":323},[146,1486,358],{"class":327},[146,1488,331],{"class":323},[146,1490,363],{"class":156},[146,1492,337],{"class":327},[146,1494,1495],{"class":148,"line":282},[146,1496,371],{"emptyLinePlaceholder":370},[146,1498,1499,1501,1503,1505],{"class":148,"line":288},[146,1500,376],{"class":323},[146,1502,379],{"class":152},[146,1504,382],{"class":323},[146,1506,385],{"class":327},[146,1508,1509,1511,1513,1515],{"class":148,"line":294},[146,1510,390],{"class":152},[146,1512,393],{"class":323},[146,1514,397],{"class":396},[146,1516,337],{"class":327},[146,1518,1519,1521,1523,1525],{"class":148,"line":402},[146,1520,405],{"class":152},[146,1522,393],{"class":323},[146,1524,397],{"class":396},[146,1526,337],{"class":327},[146,1528,1529],{"class":148,"line":414},[146,1530,417],{"class":327},[146,1532,1533],{"class":148,"line":420},[146,1534,371],{"emptyLinePlaceholder":370},[146,1536,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555],{"class":148,"line":425},[146,1538,428],{"class":323},[146,1540,431],{"class":396},[146,1542,382],{"class":323},[146,1544,436],{"class":323},[146,1546,440],{"class":439},[146,1548,443],{"class":327},[146,1550,446],{"class":152},[146,1552,393],{"class":323},[146,1554,379],{"class":152},[146,1556,453],{"class":327},[146,1558,1559],{"class":148,"line":456},[146,1560,371],{"emptyLinePlaceholder":370},[146,1562,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583],{"class":148,"line":461},[146,1564,464],{"class":327},[146,1566,467],{"class":439},[146,1568,470],{"class":327},[146,1570,473],{"class":156},[146,1572,476],{"class":327},[146,1574,479],{"class":323},[146,1576,482],{"class":327},[146,1578,485],{"class":152},[146,1580,488],{"class":327},[146,1582,491],{"class":323},[146,1584,385],{"class":327},[146,1586,1587,1589,1591,1593,1595,1597,1599],{"class":148,"line":496},[146,1588,499],{"class":323},[146,1590,502],{"class":396},[146,1592,382],{"class":323},[146,1594,507],{"class":323},[146,1596,510],{"class":327},[146,1598,513],{"class":439},[146,1600,516],{"class":327},[146,1602,1603,1605,1607,1609,1611,1613,1615,1617],{"class":148,"line":519},[146,1604,499],{"class":323},[146,1606,524],{"class":396},[146,1608,382],{"class":323},[146,1610,510],{"class":327},[146,1612,531],{"class":439},[146,1614,470],{"class":327},[146,1616,536],{"class":156},[146,1618,539],{"class":327},[146,1620,1621],{"class":148,"line":542},[146,1622,371],{"emptyLinePlaceholder":370},[146,1624,1625],{"class":148,"line":547},[146,1626,551],{"class":550},[146,1628,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647],{"class":148,"line":554},[146,1630,557],{"class":323},[146,1632,482],{"class":327},[146,1634,562],{"class":323},[146,1636,565],{"class":327},[146,1638,568],{"class":323},[146,1640,571],{"class":323},[146,1642,574],{"class":439},[146,1644,577],{"class":327},[146,1646,580],{"class":396},[146,1648,583],{"class":327},[146,1650,1651,1653,1655,1657,1659,1661,1663,1665],{"class":148,"line":586},[146,1652,589],{"class":323},[146,1654,436],{"class":323},[146,1656,594],{"class":439},[146,1658,470],{"class":327},[146,1660,599],{"class":396},[146,1662,602],{"class":327},[146,1664,605],{"class":156},[146,1666,608],{"class":327},[146,1668,1669],{"class":148,"line":611},[146,1670,614],{"class":327},[146,1672,1673],{"class":148,"line":617},[146,1674,371],{"emptyLinePlaceholder":370},[146,1676,1677,1679,1681,1683,1685,1687,1689],{"class":148,"line":622},[146,1678,499],{"class":323},[146,1680,627],{"class":396},[146,1682,382],{"class":323},[146,1684,436],{"class":323},[146,1686,634],{"class":327},[146,1688,637],{"class":439},[146,1690,640],{"class":327},[146,1692,1693,1695,1697],{"class":148,"line":643},[146,1694,646],{"class":327},[146,1696,649],{"class":396},[146,1698,652],{"class":327},[146,1700,1701],{"class":148,"line":655},[146,1702,658],{"class":327},[146,1704,1705],{"class":148,"line":661},[146,1706,371],{"emptyLinePlaceholder":370},[146,1708,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729],{"class":148,"line":666},[146,1710,499],{"class":323},[146,1712,671],{"class":396},[146,1714,393],{"class":323},[146,1716,676],{"class":152},[146,1718,679],{"class":327},[146,1720,682],{"class":152},[146,1722,382],{"class":323},[146,1724,687],{"class":396},[146,1726,679],{"class":327},[146,1728,692],{"class":439},[146,1730,695],{"class":327},[146,1732,1733],{"class":148,"line":698},[146,1734,371],{"emptyLinePlaceholder":370},[146,1736,1737,1739,1741,1743,1745,1747],{"class":148,"line":703},[146,1738,706],{"class":323},[146,1740,482],{"class":327},[146,1742,428],{"class":323},[146,1744,713],{"class":396},[146,1746,716],{"class":323},[146,1748,719],{"class":327},[146,1750,1751,1753],{"class":148,"line":722},[146,1752,725],{"class":323},[146,1754,728],{"class":327},[146,1756,1757,1759,1761,1763],{"class":148,"line":731},[146,1758,734],{"class":327},[146,1760,737],{"class":323},[146,1762,740],{"class":156},[146,1764,743],{"class":323},[146,1766,1767,1769,1771,1773],{"class":148,"line":746},[146,1768,749],{"class":327},[146,1770,737],{"class":323},[146,1772,754],{"class":156},[146,1774,743],{"class":323},[146,1776,1777],{"class":148,"line":759},[146,1778,762],{"class":327},[146,1780,1781],{"class":148,"line":765},[146,1782,768],{"class":327},[146,1784,1785,1787],{"class":148,"line":771},[146,1786,774],{"class":323},[146,1788,385],{"class":327},[146,1790,1791,1793,1795,1797],{"class":148,"line":779},[146,1792,782],{"class":323},[146,1794,785],{"class":327},[146,1796,788],{"class":439},[146,1798,640],{"class":327},[146,1800,1801],{"class":148,"line":793},[146,1802,796],{"class":327},[146,1804,1805],{"class":148,"line":799},[146,1806,802],{"class":327},[146,1808,1809],{"class":148,"line":805},[146,1810,808],{"class":327},[146,1812,1813,1815,1817],{"class":148,"line":811},[146,1814,814],{"class":327},[146,1816,817],{"class":156},[146,1818,652],{"class":327},[146,1820,1821],{"class":148,"line":822},[146,1822,825],{"class":327},[146,1824,1825],{"class":148,"line":828},[146,1826,831],{"class":327},[146,1828,1829],{"class":148,"line":834},[146,1830,837],{"class":327},[146,1832,1833],{"class":148,"line":840},[146,1834,843],{"class":327},[146,1836,1837,1839,1841],{"class":148,"line":846},[146,1838,849],{"class":327},[146,1840,852],{"class":323},[146,1842,855],{"class":327},[146,1844,1845,1847,1849,1851,1853,1855],{"class":148,"line":858},[146,1846,861],{"class":323},[146,1848,436],{"class":323},[146,1850,594],{"class":439},[146,1852,470],{"class":327},[146,1854,870],{"class":396},[146,1856,873],{"class":327},[146,1858,1859,1861,1863],{"class":148,"line":876},[146,1860,879],{"class":327},[146,1862,882],{"class":156},[146,1864,652],{"class":327},[146,1866,1867],{"class":148,"line":887},[146,1868,890],{"class":327},[146,1870,1871],{"class":148,"line":893},[146,1872,843],{"class":327},[146,1874,1875],{"class":148,"line":898},[146,1876,901],{"class":327},[146,1878,1879],{"class":148,"line":904},[146,1880,907],{"class":327},[146,1882,1883],{"class":148,"line":910},[146,1884,614],{"class":327},[146,1886,1887],{"class":148,"line":915},[146,1888,371],{"emptyLinePlaceholder":370},[146,1890,1891,1893,1895,1897,1899,1901],{"class":148,"line":920},[146,1892,923],{"class":323},[146,1894,926],{"class":327},[146,1896,513],{"class":439},[146,1898,470],{"class":327},[146,1900,933],{"class":156},[146,1902,539],{"class":327},[146,1904,1905],{"class":148,"line":938},[146,1906,941],{"class":327},[146,1908,1909],{"class":148,"line":944},[146,1910,371],{"emptyLinePlaceholder":370},[146,1912,1913,1915,1917],{"class":148,"line":949},[146,1914,952],{"class":323},[146,1916,955],{"class":323},[146,1918,958],{"class":327},[59,1920,962],{"id":961},[26,1922,965],{},[137,1924,1925],{"className":139,"code":968,"language":141,"meta":15,"style":15},[143,1926,1927,1941],{"__ignoreMap":15},[146,1928,1929,1931,1933,1935,1937,1939],{"class":148,"line":149},[146,1930,153],{"class":152},[146,1932,977],{"class":156},[146,1934,980],{"class":156},[146,1936,983],{"class":156},[146,1938,986],{"class":156},[146,1940,989],{"class":156},[146,1942,1943,1945,1947,1949,1951,1953],{"class":148,"line":227},[146,1944,153],{"class":152},[146,1946,977],{"class":156},[146,1948,980],{"class":156},[146,1950,983],{"class":156},[146,1952,986],{"class":156},[146,1954,1004],{"class":156},[26,1956,1007,1957,1012,1959,1017],{},[33,1958,1011],{"href":1010},[33,1960,1016],{"href":1015},[26,1962,1020,1963,1023],{},[143,1964,649],{},[137,1966,1967],{"className":139,"code":1026,"language":141,"meta":15,"style":15},[143,1968,1969,1983,1987,1995,1999,2015,2033,2041,2045],{"__ignoreMap":15},[146,1970,1971,1973,1975,1977,1979,1981],{"class":148,"line":149},[146,1972,153],{"class":152},[146,1974,977],{"class":156},[146,1976,980],{"class":156},[146,1978,983],{"class":156},[146,1980,986],{"class":156},[146,1982,989],{"class":156},[146,1984,1985],{"class":148,"line":227},[146,1986,371],{"emptyLinePlaceholder":370},[146,1988,1989,1991,1993],{"class":148,"line":276},[146,1990,1051],{"class":152},[146,1992,980],{"class":156},[146,1994,1056],{"class":396},[146,1996,1997],{"class":148,"line":282},[146,1998,1061],{"class":152},[146,2000,2001,2003,2005,2007,2009,2011,2013],{"class":148,"line":288},[146,2002,1066],{"class":152},[146,2004,1069],{"class":156},[146,2006,1072],{"class":156},[146,2008,983],{"class":156},[146,2010,1077],{"class":156},[146,2012,1080],{"class":156},[146,2014,1083],{"class":396},[146,2016,2017,2019,2021,2023,2025,2027,2029,2031],{"class":148,"line":294},[146,2018,1088],{"class":152},[146,2020,1091],{"class":156},[146,2022,1094],{"class":156},[146,2024,983],{"class":156},[146,2026,1099],{"class":156},[146,2028,1094],{"class":156},[146,2030,1104],{"class":156},[146,2032,1107],{"class":156},[146,2034,2035,2037,2039],{"class":148,"line":402},[146,2036,1066],{"class":152},[146,2038,1114],{"class":156},[146,2040,1117],{"class":156},[146,2042,2043],{"class":148,"line":414},[146,2044,1122],{"class":156},[146,2046,2047],{"class":148,"line":420},[146,2048,1127],{"class":156},[59,2050,1131],{"id":1130},[26,2052,1134],{},[137,2054,2055],{"className":139,"code":1137,"language":141,"meta":15,"style":15},[143,2056,2057],{"__ignoreMap":15},[146,2058,2059,2061,2063,2065],{"class":148,"line":149},[146,2060,153],{"class":152},[146,2062,157],{"class":156},[146,2064,1148],{"class":156},[146,2066,1151],{"class":156},[26,2068,1154,2069,1158],{},[143,2070,1157],{},[59,2072,1162],{"id":1161},[26,2074,1165,2075,1169,2077,1174,2079,1178,2081,1182],{},[143,2076,1168],{},[1171,2078,1173],{},[1171,2080,1177],{},[1171,2082,1181],{},[26,2084,2085],{},[1186,2086],{"alt":15,"className":2087,"src":1191},[1189,1190],[26,2089,1194],{},[26,2091,2092],{},[1186,2093],{"alt":15,"className":2094,"src":1201},[1189,1200],[26,2096,1204],{},[59,2098,1208],{"id":1207},[26,2100,1211],{},[1213,2102,1215],{},[1217,2104],{"tags":1219,"lang":1220,"section":1221},{"title":15,"searchDepth":282,"depth":288,"links":2106},[2107,2108,2109,2110,2111,2112,2113],{"id":1225,"depth":227,"text":1226},{"id":1228,"depth":227,"text":1229},{"id":1231,"depth":227,"text":1232},{"id":1234,"depth":227,"text":1235},{"id":1237,"depth":227,"text":1238},{"id":1240,"depth":227,"text":1241},{"id":1243,"depth":227,"text":1244},{"date":1247,"tags":1219,"locale":1248,"sidebar":1249},{"title":5,"description":28},{"toc":2117,"fullToc":2117},[2118,2119,2120,2121,2122,2123,2124],{"id":61,"depth":227,"text":62},{"id":131,"depth":227,"text":132},{"id":300,"depth":227,"text":301},{"id":961,"depth":227,"text":962},{"id":1130,"depth":227,"text":1131},{"id":1161,"depth":227,"text":1162},{"id":1207,"depth":227,"text":1208},1791522235010]