質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.06%

GAS 翻訳API

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 639

kokarare

score 13

LINEの翻訳BOTを作っているのですが、日本語の入力からは、何故が「A」と出力されてしまいます。
どうすれば修正できますか?

<?php
 mb_internal_encoding("UTF-8");

$accessToken = '';

//ユーザーからのメッセージ取得
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);

//取得データ
$replyToken = $json_object->{"events"}[0]->{"replyToken"};        //返信用トークン
$message_type = $json_object->{"events"}[0]->{"message"}->{"type"};    //メッセージタイプ
$message_text = $json_object->{"events"}[0]->{"message"}->{"text"};    //メッセージ内容

//メッセージタイプが「text」以外のときは何も返さず終了
if($message_type != "text") exit;

//返信メッセージ
mb_convert_encoding($message_text, "UTF-8", "auto");
$Text = explode(" ", $message_text);
if($Text[0] == "#help"){
$return_message_text = "Help\n#echo [文字列…]\n#print [文字列…] -> 文字列を表示します。\n#search [オプション…(-G{--Google}|-Y{--Yahoo}|-B{--Bing}|-D{--Duckduckgo})] [文字列…] -> 文字列を検索します。(デフォルトは-G{--Google})\n#weather [-S{--Sapporo}|-T{--Tokyo}|-O{--Osaka}|-K{--Kagoshima}] -> 指定された地域の天気予報を表示します。\n#translate [翻訳前の言語…] [翻訳後の言語…] [翻訳したい言葉…] -> 翻訳します。";
}elseif($Text[0] == "#echo" || $Text[0] == "#print"){
$return_message_text = $Text[1];
}elseif($Text[0] == "#search"){
if($Text[1] == "-G" || $Text[1] == "--Google"){
$return_message_text = "https://www.google.com/search?q=".$Text[2];
}elseif($Text[1] == "-Y" || $Text[1] == "--Yahoo"){
$return_message_text = "https://search.yahoo.co.jp/search?p=".$Text[2];
}elseif($Text[1] == "-B" || $Text[1] == "--Bing"){
$return_message_text = "https://www.bing.com/search?q=".$Text[2];
}elseif($Text[1] == "-D" || $Text[1] == "--Duckduckgo"){
$return_message_text = "https://duckduckgo.com/?q=".$Text[2];
}else{
$return_message_text = "https://www.google.com/search?q=".$Text[2];
}
}elseif($Text[0] == "#weather"){
if($Text[1] == "-S" || $Text[1] == "--Sapporo"){
$base_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=016010";
$address = "札幌";
}elseif($Text[1] == "-T" || $Text[1] == "--Tokyo"){
$base_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010";
$address = "東京";
}elseif($Text[1] == "-O" || $Text[1] == "--Osaka"){
$base_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=270000";
$address = "大阪";
}elseif($Text[1] == "-K" || $Text[1] == "--Kagoshima"){
$base_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=460010";
$address = "鹿児島";
}else{
exit;
}
$json = file_get_contents($base_url, true);
$json = mb_convert_encoding($json, 'UTF-8');
$obj = json_decode($json, true);
$base_date = $obj['forecasts'][0]['date'];    // 2001-03-01
$date_time = new DateTime($base_date);
$week = array("日", "月", "火", "水", "木", "金", "土");
$w = (int)$date_time->format('w');
$base_date = $date_time->format('Y年m月d日')."(".$week[$w].")";
$area = $obj['title'];
$description = $obj['description']['text'];
$today_datelabel = $obj['forecasts'][0]['dateLabel'];    // 今日
$today_weather = $obj['forecasts'][0]['image']['title'];    // 晴れ
$today_max = $obj['forecasts'][0]['temperature']['max']['celsius'];    // 最高気温
$today_min = $obj['forecasts'][0]['temperature']['min']['celsius'];    // 最低気温
$tomorrow_datelabel = $obj['forecasts'][1]['dateLabel'];    // 今日
$tomorrow_weather = $obj['forecasts'][1]['image']['title'];    // 晴れ
$tomorrow_max = $obj['forecasts'][1]['temperature']['max']['celsius'];    // 最高気温
$tomorrow_min = $obj['forecasts'][1]['temperature']['min']['celsius'];    // 最低気温
if($today_max == ""){
$today_max = "データなし";
}
if($today_min == ""){
$today_min = "データなし";
}
if($tomorrow_max == ""){
$tomorrow_max = "データなし";
}
if($tomorrow_min == ""){
$tomorrow_max = "データなし";
}
if($tomorrow_weather == ""){
$tomorrow_weather = "データなし";
}
if($today_weather == ""){
$today_weather = "データなし";
}
$return_message_text = $address."の天気\n\n".$today_datelabel."\n\n天気:".$today_weather."\n最高気温:".$today_max."\n最低気温:".$today_min."\n\n".$tomorrow_datelabel."\n\n天気:".$tomorrow_weather."\n最高気温:".$tomorrow_max."\n最低気温:".$tomorrow_min;
}elseif($Text[0] == "#translate"){ 
$URL = "https://script.google.com/macros/s/AKfycbzH5Oj69yHkKbpEexEYEIlKtqRxMLpJ2mGW68nZG4Ok60PWxsI/exec?text={$Text[3]}&source={$Text[1]}&target={$Text[2]}";
$str = mb_convert_encoding($UL, "UTF-8", "auto");
$return_message_text = mb_convert_encoding(file_get_contents($URL), "UTF-8", "auto");
}else{
exit;
}


//返信実行
sending_messages($accessToken, $replyToken, $message_type, $return_message_text);
?>
<?php
//メッセージの送信
function sending_messages($accessToken, $replyToken, $message_type, $return_message_text){
    //レスポンスフォーマット
    $response_format_text = [
        "type" => $message_type,
        "text" => $return_message_text
    ];

    //ポストデータ
    $post_data = [
        "replyToken" => $replyToken,
        "messages" => [$response_format_text]
    ];

    //curl実行
    $ch = curl_init("https://api.line.me/v2/bot/message/reply");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json; charser=UTF-8',
        'Authorization: Bearer ' . $accessToken
    ));
    $result = curl_exec($ch);
    curl_close($ch);
}
?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • papinianus

    2019/03/07 16:47

    #translate ja en こんにちは
    ですよね??
    #translate en ja hello
    なら動作しますか?

    キャンセル

  • papinianus

    2019/03/07 16:49

    gasは合ってたので、関係なかったです、ごめんなさい

    キャンセル

  • 退会済みユーザー

    2019/03/07 21:09

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る