【问题标题】:Tropo WebAPI with Drupal Module带有 Drupal 模块的 Tropo WebAPI
【发布时间】:2012-01-03 17:40:47
【问题描述】:

我正在尝试扩展 Drupal 网站的功能以包括 Tropo 服务。我绝对需要能够访问我的 Drupal 数据库和 Drupal 为我自己的工作提供的 API。我在编写 Drupal 模块方面相当新,但现在似乎发生的事情是 Tropo 无法将我的 .module 文件识别为 PHP,因此它没有接收必要的 JSON 调用。

我需要 a) 一种让 Tropo 从我的 .module 文件中读取的方法,或者 b) 一种将常规 .php 文件添加到我的模块的方法,这样我仍然可以进行所有正常的 Drupal 函数调用并且 Tropo 可以访问我的脚本。

想法?

【问题讨论】:

    标签: php drupal-7 drupal-modules tropo


    【解决方案1】:

    在 Drupal 中,您不能直接从 Web 运行 .module 文件。每个模块都应该实现 hook_menu 并且该钩子会创建您要使用的 URL。所以你应该给 Tropo 由 yourmodule_menu 创建的 URL,而不是 yourmodule.module 的路径。

    例如,这是 Tropo 示例模块中的 hook_menu。

    <?php
    function demo_menu() {
      $items = array();
    
      // Set up a route for the incoming call
      $items['demo/answer'] = array(
        'page callback' => 'demo_answer',
        'access arguments' => array('access content'),
        'type' => MENU_NORMAL_ITEM,
      );
    
        return $items;
    }
    
    function demo_answer() {
      module_load_include('php', 'tropo', 'lib/tropo/tropo.class');
      $tropo = new Tropo();
      $tropo->say('Hello. And Goodbye.');
      print $tropo;
    }
    
    ?>
    

    demo_menu 函数将 demo/answer 定义为您网站上的 URL。如果您的网站位于 example.com,您将向 Tropo 提供您的 URL 为 http://example.com/demo/answer。然后,当有人拨打您的 Tropo 电话号码时,demo_answer() 函数将运行,它会说“Hello. And Goodbye”。然后挂断。

    我在一次关于使用 Drupal 作为应用程序框架的演讲中使用了一个简单的演示模块,这可能会有所帮助——我在演示中广泛使用了 Tropo。 https://github.com/akalsey/drupal-framework-demo

    电话投票模块也是一个很好的例子。它使用 Tropo 将语音和短信添加到 Drupal 6 的内置投票模块。 http://drupal.org/project/phonepoll

    您可能还想看看 VoipDrupal。这允许您直接在 Drupal 中构建与 Tropo 等服务交互的脚本。 http://drupal.org/project/voipdrupal

    【讨论】:

    • 感谢您提供详细的答案和代码示例!我现在正在尝试这个:)。
    • 我唯一无法工作的是权限。每次我输入 URL 时,我最终都会得到一个拒绝访问页面:/。在做了一些研究之后,我决定只插入“访问回调”这一行 => TRUE
    • 你没有提到你使用的是什么版本的 Drupal。随着时间的推移,菜单访问 API 发生了一些变化。上面的示例应该适用于 Drupal 7,但是如果您确定您总是希望每个人都可以访问该 URL,“'access callback' => TRUE”也可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2011-03-03
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多