Drupalでノード(記事)を作成すると、そのノードのタイトルをメッセージとしてFacebookに公開するフローを構築したい。Facebook へのメッセージの公開は問題ありませんが、Drupal インストールで新しいコンテンツを作成するイベントを取得する方法がわかりません。助言がありますか?
2 に答える
Drupal 側からは、単純なカスタム モジュールを作成して実装することができますhook_node_insert()
。
function MYMODULE_node_insert($node) {
if ($node->type == 'article') {
push_article($node->title);
}
}
Drupal に変更を加えていない純粋な Mule の観点から、Drupal コネクタのインデックス ノード操作をポーリングできますhttp://mulesoft.github.io/drupal-connector/mule/drupal-config.html#index-nodes
<poll frequency="60000">
<drupal:index-nodes startPage="1" pagesize="10">
<drupal:fields>
<drupal:field>nid</drupal:field>
<drupal:field>type</drupal:field>
<drupal:field>title</drupal:field>
</drupal:fields>
</drupal:index-nodes>
</poll>
次に、最終変更日や最終ページ番号などのマーカーを永続的なオブジェクトストアに永続化して、次のポーリングで読み取ることができるようにする必要があります。これにより、どのノードが処理されたか、またはどのページから開始するかがわかります。Mule 3.5 を使用している場合は、その特定のタイプの機能用に新しい「透かし」機能があります。透かしに関する情報はこちら: https://www.mulesoft.org/jira/browse/MULE-6861
ただし、ポーリングのより良い解決策は、ActiveMQ や RabbitMQ などのメッセージ キューを使用することです。たとえば、Drupal は Stomp を介してメッセージを発行でき、Mule は JMS インバウンド エンドポイントまたは AMQP インバウンド エンドポイントを介してメッセージを取得できます。あなたが行くメッセージ。このように、メッセージはプルではなくプッシュされますが、Drupal のカスタマイズが必要です。