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

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

ただいまの
回答率

90.33%

  • CakePHP

    2389questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Twilio

    24questions

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

Cakephp2.4でTwilio SDK5を使用したい

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 222

tanakatoshi

score 2

 前提・実現したいこと

CakePHP2.4とTwilioを使用してTwilioの各種サービスを使用しています。
現在稼働中のシステムはTwilioSDK4.xバージョンで問題なく使用できているのですが、
TwilioSDK5へのアップデートが必要になりCakePHPにTwilioSDK5を乗せたのですがうまく動きません。
CakePHP2.4でTwilioSDK5を使用するにはどのような手法があるのでしょうか。

 試した導入手順

1.TwilioSDKのダウンロード https://github.com/twilio/twilio-php

2.ServiceとTwilioディレクトリをapp/Vendor/にアップロード.

3.app/Config/bootstrap.phpに下記ソースで全てのファイルをインポート.

        imoprtVendorFiles();
        function imoprtVendorFiles() {
            $vendorPath = APP.DS.'Vendor'.DS;
            $vendorDir = new Folder($vendorPath);
            $files = $vendorDir->read(true);
            readVendorFiles($files, $vendorPath, 'Vendor');
        }

        function readVendorFiles($files, $path, $usesPath) {
            if (2 <= count($files)) {
                $folders = $files[0];
                foreach ($folders as $folder) {
                    $innerPath = $path.$folder.DS;
                    $innerFolder = new Folder($innerPath);
                    $innerFiles = $innerFolder->read(true);
                    readVendorFiles($innerFiles, $innerPath, $usesPath.'/'.$folder);
                }
                $files = $files[1];
                foreach ($files as $file) {
                    $file = str_replace('.php', '', $file);
                    App::uses($file, $usesPath);
                }
            } else {
                foreach ($files as $file) {
                    $file = str_replace('.php', '', $file);
                    App::uses($file, $usesPath);
                }
            }
        }


4. この状態で下記ソースを動かすとエラーが発生.
$client = new Client($sid, $token);

 発生しているエラーメッセージ

Class 'Twilio\TwiML\TwiML' not found in /myserver/app/Vendor/Twilio/TwiML/Voice/Client.php on line 14

 試したこと

namespaceが使用されている為、下記を参照しbootstrap.phpに該当ソースを入れてみました。
http://note.onichannn.net/archives/1149

結果として以下のようなエラーが返ってくる為やはり使用できない状況です。

Class 'Client' not found

CakePHP2.4でTwilioSDK5を使用する為にどのような方法を取れば良いでしょうか。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

0

シンプルに

require __DIR__ . '/vendor/twilio/autoload.php';

で電話、SMS できました。

https://jp.twilio.com/docs/libraries/php
を参考にしました。

ただ、この例だと vendor の下に大量のファイルができるので、twilio というフォルダを作って composer require twilio/sdk しました。

このコードは動きますか?実行は ./Console/cake twilio です。

<?php
# Console/Command/TwilioShell.php
require __DIR__ . '/../../../vendors/twilio/autoload.php';
use Twilio\Rest\Client;

class TwilioShell extends AppShell
{
    public function main()
    {
        $sid    = $_ENV['TWILIO_ACCOUNT_SID'];
        $token  = $_ENV['TWILIO_AUTH_TOKEN'];
        $client = new Client($sid, $token);
        $call   = $client->calls->create('+81...', '+8150...', array(
            'url' => 'https://demo.twilio.com/docs/voice.xml'
        ));
    }
}

asahina1979 さんによると composer 対応は 2.4.10 からだそうです。
2.4.10 未満の場合は composer を使わない下記方法はどうでしょうか。
https://jp.twilio.com/docs/libraries/php#using-without-composer

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/08/28 12:36

    cakephp2 だったら composer じゃなく雛形をダウンロードして作成するタイプだと思うぞ

    キャンセル

  • 2018/08/28 16:02 編集

    composer で動いてます
    最小限のコードはこんな感じ

    $ ./Console/cake | grep v2
    Welcome to CakePHP v2.10.11 Console

    $ cat Console/Command/TwilioShell.php
    <?php
    require __DIR__ . '/../../../vendors/twilio/autoload.php';
    use Twilio\Rest\Client;

    class TwilioShell extends AppShell {
    public function main() {
    $sid = $_ENV['TWILIO_ACCOUNT_SID'];
    $token = $_ENV['TWILIO_AUTH_TOKEN'];
    $client = new Client($sid, $token);
    $call = $client->calls
    ->create('+81...',
    '+8150...',
    array('url' => 'https://demo.twilio.com/docs/voice.xml')
    );
    }
    }

    $ ./Console/cake twilio

    キャンセル

  • 2018/08/28 18:07

    Cake PHP 2.4 Release 2013/08/30
    Cake PHP 2.x composer.json 初期コミット 2013/12/29

    キャンセル

  • 2018/08/28 18:09

    2.4.x だと 2.4.10 (2014/5/18)から対応だね

    キャンセル

  • 2018/08/28 18:37

    すごい貴重情報。
    元質問者さんは 2.4 とのことだけど、正確なバージョンいくつなんだろうな。

    試してませんが composer 使わないインストール方法もあります。
    https://jp.twilio.com/docs/libraries/php#using-without-composer

    キャンセル

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

  • CakePHP

    2389questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Twilio

    24questions

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