0

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

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

想法?

4

1 回答 1

2

在 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

于 2012-01-03T18:48:52.883 回答