Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9449

Node.jsでDeepl APIをたたいて、日本語翻訳をLINE Botに出力

$
0
0
はじめに 翻訳APIにはgoogleやMicrosoftのものなど いろいろあるみたいですが 今回はDeepl APIを使用します。 Deepl APIをNode.jsで叩く記事はあまりなかった印象でした。 今回は、この記事の続きのような感じです。 流れとしては、下記の通りです。 1. LINEのメッセージを受け取る 2. 格言APIで英語の文章を取得 3. 取得した文章をDeepl APIに渡す 4. 翻訳された結果をLINEのメッセージに出力 Deeplへの登録 Deeplへの登録やAPIキーの場所などはこちらを参照しました。 Deeplのnpmをインストール deeplのnpm(Node Package Manager)があるのでそれをインストール ターミナル上で任意のフォルダに移動しnpm install deepl --saveを実行。特になにも起こりませんが、大丈夫なはずです。 上記サイトの「Usage」を参考に、下記コードを作成しました。 全体像のコード 'use strict'; //格言APIを叩ける const axios = require('axios'); //DeeplのAPI const translate = require("deepl"); const express = require('express'); const line = require('@line/bot-sdk'); const PORT = process.env.PORT || 3000; const config = { channelSecret: 'XXXXXXXX', // LINEシークレットチャネル channelAccessToken: 'XXXXXXXX' // LINEアクセストークンチャネル }; const app = express(); app.post('/webhook', line.middleware(config), (req, res) => { console.log(req.body.events); Promise .all(req.body.events.map(handleEvent)) .then((result) => res.json(result)); }); const client = new line.Client(config); //LINEのメッセージを受けると実行される関数 async function handleEvent(event) { let text_ja = '';  //ここに出力する日本語を格納する if (event.type !== 'message' || event.message.type !== 'text') { return Promise.resolve(null); } const res = await axios.get('https://api.adviceslip.com/advice'); const text_en = res.data.slip.advice; //任意のAPIから獲得した英語の格言を格納 console.log(text_en); translate({ free_api: true, // ← フリープランのみ記載 text: text_en, target_lang: 'JA', auth_key: 'XXXXXXXX', // ここにDeeplのAPIキーを入力 }) .then(result => { text_ja = result.data.translations[0].text; //Deeplで翻訳された文章をtext_ja変数に格納 console.log(text_ja); client.replyMessage(event.replyToken, { type: 'text', text: text_en +'\n'+ text_ja //英語の格言と、日本語に翻訳されたものがLINEで通知される }); }) .catch(error => { console.error(error) }); } app.listen(PORT); console.log(`Server running at ${PORT}`); おわりに Deepl APIをNode.jsを使って出力しているケースがそう多くなかったので結構手間がかかりました...。 とても綺麗なコードとは言えませんが、 スコープの知識がもっと深ければうまくできる方法はありそうです。 少しでもお力になれれば幸いです。

Viewing all articles
Browse latest Browse all 9449

Trending Articles