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

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

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twilio

Twilioは電話・SMS・ビデオ・チャット・SNS連携等、様々なコミュニケーションチャネルの融合を可能とするクラウドコミュニケーションAPIサービスです。 従来は大規模な設備投資が必要だった電話と連携したシステムも、汎用的な開発言語で容易に開発が可能となり、 様々なコミュニケーションチャネルを活用したシステム構築が可能となります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

1534閲覧

Wordpressの固定ページでTwilioのログを取得・表示させたい

minhigh

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twilio

Twilioは電話・SMS・ビデオ・チャット・SNS連携等、様々なコミュニケーションチャネルの融合を可能とするクラウドコミュニケーションAPIサービスです。 従来は大規模な設備投資が必要だった電話と連携したシステムも、汎用的な開発言語で容易に開発が可能となり、 様々なコミュニケーションチャネルを活用したシステム構築が可能となります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/05/13 02:03

Wordpressの固定ページに、Twilioのログを表示したい

当方、html・cssはある程度理解していますが、
phpは「実現したいこと」をその都度(局所的に)調べて解決しています。

今回、
Wordpressの固定ページに、Twilioのログを取得・表示させたいと考えています。

Twilio docs サイト

EXAMPLE JSON API RESPONSE

{ "calls": [ { "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "annotation": "billingreferencetag1", "answered_by": "machine_start", "api_version": "2010-04-01", "caller_name": "callerid1", "status": "completed",} // 一部抜粋及び略

のような形での取得がしたいです。

当初、__cURL関数__を用いて実現出来ないか?と試行錯誤しましたが、
にあるような形での取得が出来なかった為、
同サイトに記載されている

php

<?php // Update the path below to your autoload.php, // see https://getcomposer.org/doc/01-basic-usage.md require_once '/path/to/vendor/autoload.php'; use Twilio\Rest\Client; // Find your Account SID and Auth Token at twilio.com/console // and set the environment variables. See http://twil.io/secure $sid = getenv("TWILIO_ACCOUNT_SID"); $token = getenv("TWILIO_AUTH_TOKEN"); $twilio = new Client($sid, $token); $calls = $twilio->calls ->read([], 20); foreach ($calls as $record) { print($record->sid); }

を用いる形で組んでみました。

固定ページに表示されたエラーメッセージ

Fatal error: Uncaught Twilio\Exceptions\ConfigurationException: Credentials are required to create a Client in /home/hoge/hoge/public_html/wp-content/themes/hoge/Twilio/Rest/Client.php:168 Stack trace: #0 /home/hoge/hoge/public_html/wp-content/themes/hoge/hoge.php(33): Twilio\Rest\Client->__construct('', '') #1 /home/hoge/hoge/public_html/wp-includes/template-loader.php(106): include('/home/hoge/...') #2 /home/hoge/hoge/public_html/wp-blog-header.php(19): require_once('/home/hoge/...') #3 /home/hoge/hoge/public_html/index.php(17): require('/home/hoge/...') #4 {main} thrown in /home/hoge/hoge/public_html/wp-content/themes/hoge/Twilio/Rest/Client.php on line 168

上記、エラーが表示され__json__を取得することが出来ませんでした。

固定ページテンプレート .php

<?php get_header(); ?> <?php basic-usage.md require_once 'Twilio/autoload.php'; // 編集している.phpと同階層に Twilioフォルダがあります。 use Twilio\Rest\Client; $sid = getenv("hogehoge"); $token = getenv("hogehoe"); $twilio = new Client($sid, $token); $calls = $twilio->calls ->read([], 20); foreach ($calls as $record) { print($record->sid);} ?> <?php wp_footer(); ?>

試したこと

Twilio/Exceptions/ConfigurationException.php

<?php namespace Twilio\Exceptions; class ConfigurationException extends TwilioException { }

上記、関係があるかと思いましたが、ピンと来ませんでした・・
また、

/Twilio/Rest/Client.php:168

Client.php :167~169

$this->logLevel = $this->getArg(null, self::ENV_LOG); if (!$this->username || !$this->password) { throw new ConfigurationException('Credentials are required to create a Client'); }

と支給ファイルの記述もあったので、
念のため公式サポートへ当該エラー内容を問い合わせましたが、

$sid = getenv("TWILIO_ACCOUNT_SID"); $token = getenv("TWILIO_AUTH_TOKEN");

引用テキスト上記を、使用しているアカウントのものへ書き換えが必要。

との返信のみで、具体的なコーディングへの問い合わせはサポート外とのことでした。
(解っていましたが^^;)

補足情報

前述のdocsソース内の

require_once '/path/to/vendor/autoload.php';

をwpテーマのディレクトリ内に読みにいっています。

  • 構築中に、__allow_url_include__絡みのエラーなども出ましたが、

サーバの__php.ini__から設定を変更したり、調べてわかったエラーは潰している認識です。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

getenv から

php

1$sid = "ACXXXXXXXXXXXXXXXX"; 2$token = "xxxxxxxxxxxxxxxxxxx";

に変更してもエラーは同じ Credentials are required to create a Client ですか?
もしそうなら Twilio コンソールにある Account SID と Auth Token を再度見直したほうがよさそう。末尾一文字コピペミスしてるとかあるかも。

違うエラーメッセージなら、そのエラーメッセージを書くと解決に繋がるかもしれません。

あと register_globals は無関係です。非常に危険なオプションなので off のままがいいですよ。なぜかはこちらを。
https://teratail.com/questions/3339

投稿2021/05/13 04:42

nocomment

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minhigh

2021/05/13 09:17

ご回答ありがとうございます。 $id $token それぞれにアカウント情報をいれても、エラーの内容は変わりませんでした・・。 「公式サポートからもid $tokenをアカウント情報に~」との回答でしたので、 アカウント情報について再度確認していこうと思います。 register_globals についてもご指摘ありがとうございます!
minhigh

2021/05/14 03:42

すみません! ご回答を読み間違えていました。 getenv を外して試したところ、エラーは消えました。 ありがとうございました。 が、 一列だけ文字列が出てくるのみで、 公式docsにあるようなレスポンスではありませんでしたので、 再度サポートに問い合わせをしています。
guest

0

エラーメッセージを読むとクレデンシャルがちゃんと設定されていないように見えますが
$sidと$tokenは環境変数からちゃんと読み出せているでしょうか?

投稿2021/05/13 02:30

chiino58

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minhigh

2021/05/13 02:47

ご回答ありがとうございます。 なるほど・・「固定ページテンプレート .php」に記述するだけではダメなんですね・・。 環境変数についても勉強不足なので調べてみたいと思います!
chiino58

2021/05/13 02:52

getenv関数は環境変数から引数に渡したキーを元に値を取ってくる関数です。 なので、環境変数に設定値がない場合、nullになって該当のエラーが発生すると思います。 セキュリティ上良くないですが、とりあえず試してみる程度でしたら 一旦直接、クレデンシャル情報をソースコードに書いてみて挙動を確かめてみるのもいいと思います。 ``` $sid = "ACXXXXXXXXXXXXXXXX"; // Twilioのコンソールから認証情報を確認して置き換えてください $token = "xxxxxxxxxxxxxxxxxxx"; // Twilioのコンソールから認証情報を確認して置き換えてください $twilio = new Client($sid, $token); $calls = $twilio->calls ->read([], 20); foreach ($calls as $record) { print($record->sid); } ```
minhigh

2021/05/13 03:12

何度もご返答ありがとうございますmm ``` $sid = "ACXXXXXXXXXXXXXXXX"; $token = "xxxxxxxxxxxxxxxxxxx"; ``` まさに、現状、この形で記述してるのですがエラーになってしまっています。 こちらでも少し調べてみまして、 使用してるレンタルサーバーにて、「register_globals」の設定がOFFでしたので、 関係がある!?と思い、ONにしてみましたが、今度はWPページ自体が500エラーになってしまい、 OFFに戻しました・・。 ご指摘いただいたように、$sidと$tokenは上記の形で置き換えられていると思いますので、 こちらもサポートへ投げてみようと思います。
chiino58

2021/05/13 03:47

PHP側の問題かと思いますので、twilioのサポートに問い合わせてあまり意味はないかと思いますが。。。 頑張ってください!
minhigh

2021/05/13 04:28

ありがとうございます!解決に至りましたら記載させていただきますmm
guest

0

自己解決

回答者の皆さんや、公式サポートからの回答を踏まえまして、

$sid = getenv("TWILIO_ACCOUNT_SID"); $token = getenv("TWILIO_AUTH_TOKEN");

getenvの記述だと、環境変数を読みにいってしまうため、

$sid = "TWILIO_ACCOUNT_SID"; $token = "TWILIO_AUTH_TOKEN";

上記の記述にすることでアクセスが完了しました。

ただ、公式docsに記載されている EXAMPLE JSON API RESPONSE
の形では表示されず、具体的な取得・表示だけになりました。

$calls = $twilio->calls ->read([], 20); <pre><?php var_dump($calls) ?></pre>

とする事で、全体のjsonが表示行われましたが、
通話ログを見やすい形で表示する為には、まだまだ手間がかかりそうでした。

ベストアンサーは、ご回答いただいた方どちらにも送りたいのですが、
はじめの方(ご回答内容をこちらで読み違えており、これで解決してました)、にさせていただきます。

追記:
と書いてたら、自己解決はBAつけられないんですね・・。失礼しました。

投稿2021/05/14 06:41

編集2021/05/14 06:44
minhigh

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問