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

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

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

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

Twilio

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

Q&A

1回答

1772閲覧

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

tanakatoshi

総合スコア6

CakePHP

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

Twilio

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

0グッド

0クリップ

投稿2018/07/29 23:49

前提・実現したいこと

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に下記ソースで全てのファイルをインポート.

PHP

1 imoprtVendorFiles(); 2 function imoprtVendorFiles() { 3 $vendorPath = APP.DS.'Vendor'.DS; 4 $vendorDir = new Folder($vendorPath); 5 $files = $vendorDir->read(true); 6 readVendorFiles($files, $vendorPath, 'Vendor'); 7 } 8 9 function readVendorFiles($files, $path, $usesPath) { 10 if (2 <= count($files)) { 11 $folders = $files[0]; 12 foreach ($folders as $folder) { 13 $innerPath = $path.$folder.DS; 14 $innerFolder = new Folder($innerPath); 15 $innerFiles = $innerFolder->read(true); 16 readVendorFiles($innerFiles, $innerPath, $usesPath.'/'.$folder); 17 } 18 $files = $files[1]; 19 foreach ($files as $file) { 20 $file = str_replace('.php', '', $file); 21 App::uses($file, $usesPath); 22 } 23 } else { 24 foreach ($files as $file) { 25 $file = str_replace('.php', '', $file); 26 App::uses($file, $usesPath); 27 } 28 } 29 }

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を使用する為にどのような方法を取れば良いでしょうか。

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

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

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

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

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

guest

回答1

0

シンプルに

php

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

で電話、SMS できました。

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

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

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

php

1<?php 2# Console/Command/TwilioShell.php 3require __DIR__ . '/../../../vendors/twilio/autoload.php'; 4use Twilio\Rest\Client; 5 6class TwilioShell extends AppShell 7{ 8 public function main() 9 { 10 $sid = $_ENV['TWILIO_ACCOUNT_SID']; 11 $token = $_ENV['TWILIO_AUTH_TOKEN']; 12 $client = new Client($sid, $token); 13 $call = $client->calls->create('+81...', '+8150...', array( 14 'url' => 'https://demo.twilio.com/docs/voice.xml' 15 )); 16 } 17}

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

投稿2018/08/28 01:28

編集2018/08/28 11:45
nocomment

総合スコア64

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

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

退会済みユーザー

退会済みユーザー

2018/08/28 03:36

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

2018/08/28 07:03 編集

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 09:07

Cake PHP 2.4 Release 2013/08/30 Cake PHP 2.x composer.json 初期コミット 2013/12/29
退会済みユーザー

退会済みユーザー

2018/08/28 09:09

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問