インスタントメッセンジャーをいわゆる「会話型コマース」のプラットフォームとして使用することが流行になりました。現在、スムージーとコワーキングに加えて、自尊心のあるスタートアップはボットまたは少なくとも電報のチャンネルを取得する必要があります。 彼らを支援するために、市内で最高のスムージーとコワーキングコーヒーやハンバーガーを探すボットを作成しただけでなく、その開発方法に関する記事も作成しました。
私たちの小さなチュートリアルでは、ボットを作成し、その中にグラフィカルメニューを設定し、メッセージを編集し、1つのメッセージでテキストと写真を送信する方法について説明します。
なぜボットが必要なのですか?
Tagvisor-機関に関する実際のレビューを検索するためのサービス。 ジオロケーション、ハッシュタグ、およびソーシャルネットワークの機関の公式アカウントからそれらを集約します。 次に、人気(ソーシャルネットワーク上の投稿の数と新鮮さ)およびユーザーとの近さによってランク付けします。
Custdevは、ターゲットオーディエンスが電話から近くの場所を探すことが多いことを明らかにしました。 彼女は検索結果に20を超えるオプションを表示したくないので、レビュー、写真、地図上の施設のマークをすぐに見たいと考えています。
モバイルアプリケーションを展開するのは論理的ですが、潜在的なユーザーの開発価格と参入のしきい値は、若いスタートアップにとっては高すぎます。 私たちはファッショナブルな方法で行くことに決め、ボットをmvpとしてリリースしました。
@TagvisorBotは、選択したカテゴリで最も近い施設を表示します。
このサービスのデスクトップバージョンと同様に、問題の主な内容はソーシャルネットワークからの投稿です。
開発
実装には、Telegram 2.0に適応したNode.jsと@ node-telegram-bot-apiモジュールのフォークが選択されました。
主に電報APIドキュメントとnode-telegram-bor-apiモジュールを使用しました。 ロシアのドキュメントが好きな人のために、 翻訳がありますが、それはまだ進行中です。 Telegram自体にはロシア全土からの開発者のグループもあります)およびfacebookにもあります。 グループではいつでも質問を書くことができ、通常は数日以内に答えます。
作成
ボットを作成するには、最初に / newbotコマンドを使用して@botfatherに移動します。 彼は、ボットの名前とそのユーザー名(ボットで終わるはずです)を書くように頼みます。 ボットを作成するとき、@ botfatherはAPIのhttpトークンを報告します。 / setで始まるコマンドは、名前、説明、アバター、プロファイル内のテキスト、説明など、さまざまなボットオプションの構成に役立ちます。 すべてが非常に簡単です。
ボットを機能させるには、更新モード(ポーリングまたはWebHook)を選択する必要があります。
- WebHookモードでは、リクエストが受信されるたびに、Telegramサーバーがデータをボットに送信します。 これは便利で信頼性の高いオプションであり、最も重要なことは高速ですが、残念ながらこのモードではhttps接続と証明書が必要です。
- ポーリングモードでは、ボットはTelegramサーバー自体にアクセスし、新しいデータを収集します。 このモードははるかに簡単ですが、ボットの反応は瞬時ではなく、平均して0.5秒の遅延があります。 さらに、サーバーからの応答に障害が発生する場合があることを考慮する必要があります。そのため、ボットはそのようなエラーに耐えるようにする必要があります。
ボットの打ち上げ
ボットを開始するには、パッケージを接続し、必要なデータをボットに転送する必要があります:トークンおよび更新モード。
const TelegramBot = require('./lib/telegram.js'); const bot = new TelegramBot('YOUR_TOKEN', {polling: true}); bot.getMe().then(function (me) { console.log('Hi my name is %s!', me.username); });
getMe()関数は、ボットトークンが正常に承認され、プログラムに制御が発行されると呼び出されます。 同時に、関数getMe()。()は、関数function(me)を引数として受け取ります。 最初の引数は、ボットに関するさまざまな情報を取得し、この場合はコンソールに表示できるオブジェクトです。
さらに、ボットにメッセージの送信を教えるには、bot.sendMessageメソッド(chatId、「Hello World !!!」)を使用する必要があります。 ボットが着信リクエストを理解するには、bot.on( 'message'、function(msg){})を使用するだけで十分です。 メソッドの詳細は、ドキュメントnode-telegram-bot-apiで説明されています。
美しいボタン
標準キーボードの代わりにインラインキーボードを表示するには、メッセージを送信するときにそのパラメーターをsendMessageメソッドに渡す必要があります。
const opt = { parse_mode: 'markdown', disable_web_page_preview: false, reply_markup: JSON.stringify({ inline_keyboard: [ [{text: ` ${emoji.get('ru')}`, callback_data:'rus'}, {text: `English ${emoji.get('gb')}`, callback_data:'eng'}] ] }) } bot.sendMessage(chatId, 'language?',opt);
textがボタン上のテキストである場合、callback_dataはボタンがクリックされたときにボットが受け取るデータです。

したがって、特定のボタンを押すイベントをキャッチするには、メソッドを使用する必要があります。
bot.on('callback_query', function (msg) { if (msg.data === 'rus'){ console.log(“Russian”); } if (msg.data === 'eng'){ console.log(“English”); } });
メッセージ修正
メッセージを再送信するのではなく、既存のメッセージを修正する必要がある場合があります(データ表示の都合上)。 これを行うために、bot.editMessageText(text、opt)メソッドを使用することにしました。 textはメッセージの変更されたテキスト、optはキーボードの存在、テキストのフォーマットなど、電報をリクエストするための追加オプションです。


テキストと写真を1つのメッセージで送信する
標準のsendPhotoメソッドは適切ではありません。テキスト内の文字数やその他のフォーマットに制限があるため、テキストは写真の下に書き込まれます。 そのため、sendMessageを使用し、メッセージテキストに目的の画像へのリンクを挿入しました。

テレグラムが画像をメッセージにロードするには、disable_web_page_preview:falseパラメーターを設定する必要があります。
var opt = { chat_id: chatId, parse_mode: 'markdown', disable_web_page_preview: false, reply_markup = JSON.stringify({ inline_keyboard: [..] }) }
テキストをフォーマットするには、parse_modeパラメーターを設定する必要があります。 マークダウンとhtmlの2つの意味があります。 マークダウンを使用すると、フォームのフォーマットが使用されます。
*bold text* _italic text_ [text](URL) `inline fixed-width code` ```pre-formatted fixed-width code block``` const text = '[](url)'; bot.sendMessage(chatId, text);
ボットストア
ユーザーだけでなく、この美しさを世界中で見られるようにするために、ハブで記事を書いてボットをボットストア(storebot) にアップロードできます。
登録と公開は簡単です。storebot.metにログインし、「次、完了、準備完了」の後に「AddBot」メニューをクリックします。 これはAppStoreでの管理ではありません。
最もクールなボーナス

そのため、小さなチュートリアルの助けを借りて、電報でボットを作成する方法を学ぶことができました。 皆様のお役に立てば幸いです。 そして、あなたがクールな開発者であり、これらすべてがあなたにとって明白だったなら、私たちは小さな挑戦に参加することを勧めます:上で書いたように、Tagvisorにはデスクトップ版もあり、先日テストモードで立ち上げました。 バグ(レイアウト、コード、モバイルバージョン)が最も多い場合は、3つの大きなピザの配達を手配します。 バグをbugtracker@tagvisor.comに送信してください。