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

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

ただいまの
回答率

89.23%

[LINE bot]Azureで作成したwebアプリがwebhookに設定出来ない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,075

csuser01234

score 38

Visual studio 2017 の「C# LINE Bot Application」にて、コンパイル→発行まではうまく行くのですが、
LINE Developers画面の作成したLINEチャネルのwebhookのところにURLを設定し、接続確認で失敗してしまいます。
■エラー内容
**
Webhook が正常ではない HTTP ステータスを返しました。
**
Visual studio内で発行 → 設定画面の接続の検証では成功します。
ちなみにコードは一切いじっていません。
web.configの”channellSecret”と”channelAccessToken”にはLINEチャネルの値をそれぞれコピペしてあります。
webhookのURLは「https://{アプリ名}.azurewebsites.net/api/linemessage」としました。

どこか足りない設定、またはおかしい設定あるでしょうか?

気になる点としては、
1、webhookに設定するURLの後ろにつけるのは「/api/linemessage」でいいか?
2、AzureのデフォルトのURLはhttpだったので、設定画面にてsを追記してhttpsにしたがいいか?
3、visual studio側でコンパイルと発行が成功しているのに、LINEの設定で失敗する事がありえるのか?

以上、よろしくお願いします。

(追記)
Web発行が失敗しているかもしれません。
成功するとWebブラウザ上に成功しましたと英語のメッセージが出るようなのですが、エラーが出ていました。
■エラー内容
Server Error in '/' Application.

Runtime Error 
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

0

1.ソースコードが示されていないため、正しいかどうかは判断しかねますがこのサイトと同じように開発したのならば/api/linemessages(最後にsがあるかないか)となるのではないでしょうか?

2.むしろLINE BotはhttpsのWebhook呼び出しにしか対応していないのでSSLは必須です。
https://developers.line.me/ja/docs/messaging-api/building-bot/

注:Webhook URLにはHTTPSを使用し、認定認証局で発行されたSSL証明書を設定する必要があります。認定認証局のリストを参照してください。

3.コンパイル・発行が成功していることとプログラムが正常に動いているかは別物です。
処理は正常でも、プログラムに対して与える値によっては実行時にエラーを吐くこともあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/30 11:04

    デプロイ成功しました!!

    ご指摘頂きエラー画面に出ていたパッケージをNuGetマネージャーより再取得、更新すると今まで引っ掛かっていた例外を通過して、そのままAzure無料アカウントを使用してweb上にデプロイし、
    成功した証の「Your App Service app has been created」が表示されました。

    ただ、デプロイ成功したURLを
    LINE DevelopersサイトのチャネルのwebhookのURLに下記のように設定したのですが、
    https://アプリ名.azurewebsites.net/api/linemessages

    やはりwebhookが正常ではない、HTTPステータスを返しました。と言うエラーになってしまいます。
    web発行までうまくいっている事が確認できているので、
    あとは疑うところとすれば

    1、URLのアプリ名の後ろにつけるのは本当に /api/linemessages か?
    2、Azureプロファイの設定?リソースグループやAppServiceの国やサイズ??(S1(1個のコア、1.75GBのRAM)とか言う選択肢がある)

    辺りになってくるのでしょうか?

    キャンセル

  • 2017/11/30 11:58

    LINEからメッセージを送ったら、プログラムが正常に動作しているようでした。
    良くわかりませんが、エラーは出ていたのですがちゃんと動いてくれてました。
    LINEとAZureの相性が悪い?のかわかりませんが、本稿解決です。
    この度は誠にありがとうございました。

    キャンセル

  • 2017/11/30 12:25 編集

    そこはLINEのdeveloper画面がおかしいみたいです。
    僕はAWS(ALB+EC2)+nginx+Goでやってますが、全く同じ状態です。
    リリースしてから1年近く経っているので今更疎通がおかしいとは思えず
    メッセージやり取りもできていますので、とりあえず問題ないかと思います。

    キャンセル

0

2、AzureのデフォルトのURLはhttpだったので、設定画面にてsを追記してhttpsにしたがいいか?

これが非常に怪しいですね。
ただhttpsにしただけならNGです。
きちんとSSL証明書を発行してサーバ設定していますか?
もしされているのだとしたら、curlなど叩いてLINE以外からのアクセスができることを確認しましょう。
ちなみに、LINEに設定するエンドポイントはhttpsでないとダメなので、SSL化するしかないかと思います。
また、自己証明書では規約NGだったかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/29 13:37

    確認してみたところ、そもそも新規プロジェクトを立ち上げた時点で、ビルドは通るのですがその後ローカルでデバッグ実行した時点でブラウザ上にエラーが表示していました。

    ■エラー内容
    '/' アプリケーションでサーバー エラーが発生しました。

    ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
    説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

    例外の詳細: System.IO.FileLoadException: ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)

    このエラーが出た場合、まずどこを確認して修正する必要がありますか?

    キャンセル

  • 2017/11/30 12:24

    解決できたようでよかったです!

    キャンセル

  • 2017/11/30 15:34

    SSL証明書の件、確認する事が出来ました。誠にありがとうございました。

    キャンセル

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

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