SugarCRM

最終回 クラウドコネクタで外部サービスのデータを取り込む


河村 嘉之
オープンソースCRM株式会社
2009/8/5

オープンソースのSFA/CRMアプリケーション「SugarCRM」は、利用者に合わせてカスタマイズを加えていくことで、より真価を発揮することができます。この連載では、ソースコードの内容を把握した上でさまざまなカスタマイズを加えていくまでを紹介します(編集部)

 前回「Webサービスを利用してほかのシステムと連携する」では、Webサービスインターフェイスの機能を紹介し、外部からSugarCRMのデータを利用したり、変更したりできることを説明しました。Webサービスインターフェイスを利用することにより、外部のシステムと連携してSugarCRMを動作させることができます。

 一方、インターネットやイントラネットに点在するさまざまなシステムでも、有用なデータは蓄積されています。例えば、外部のマスター表にあるデータを取得するなど、これらのデータをSugarCRMから利用したい場合も多くあると思います。

 このような場合に便利な機能として、SugarCRMには、外部のデータをSugarCRMに取り込む仕組みとしてクラウドコネクタという機能があります。この機能はSugarCRMバージョン5.2から実装された比較的新しい機能です。今回は、このクラウドコネクタについて説明していきます。

クラウドコネクタの機能

 クラウドコネクタとは、ネットワーク上で公開されているサービスからデータを取得し、それをSugarCRMに取り込む機能です。

 現在、インターネット上には従来のページを提供するだけではなく、ほかのシステムから利用可能な形式のデータを公開しているサービスが点在しています。これらのサービスの多くは、SOAPやRESTといった形式でデータを取得できるインターフェイスを持っています。SOAPやRESTは通常HTTPを利用してやりとりされるため、HTTPで到達可能なネットワークであれば、世界中のサービスにアクセスできます。

 SugarCRMのクラウドコネクタも、SOAPとRESTを利用して外部サービスのデータを取得します。SOAPやRESTを利用したサービスの中には、データの取得だけではなく、変更・削除などを行えるものもありますが、クラウドコネクタではデータの取得のみをサポートしています。

 クラウドコネクタでは、外部サービスから取得したデータをSugarCRMで蓄積されている企業情報の上に重ねて表示することができます。また、Sugar ProfessionalとSugar Enterprise(どちらも有償版)は、外部サービスから取得したデータをSugarCRMのデータにマージする機能を持っています。

クラウドコネクタの設定

 Sugar Community Edition バージョン5.2には、ビジネス特化型のSNS「LinkedIn」(http://www.linkedin.com/)へのコネクタが用意されています。LinkedInコネクタでは、企業の名前を基にLinkedInの情報を検索し、取引先の情報の上に表示します。

 デフォルトでは、このコネクタは無効となっています。そこで、このLinkedInコネクタを有効化してみましょう。手順は以下のようになります。

  1. 管理者でログインし、「管理」メニューに行く
  2. 「システム管理→コネクタ設定」をクリックし、「コネクタ設定」画面を表示する
  3. 「コネクタプロパティの設定」でサービスへの接続パラメータなどを設定する。LinkedInコネクタの場合はこのままでよい
  4. 「コネクタを有効化」でコネクタの対象となるモジュールを選択する。ここでは、「Accounts」を無効から有効へドラッグアンドドロップする。設定後、保存ボタンを押す
  5. 「コネクタフィールドを関連付け」でコネクタを有効化したモジュールに対して、関連付けられるフィールドを指定する。ここではデフォルトの「名前」のままとし、保存ボタンを押す

 以上で、LinkedInコネクタの設定が終了し、このコネクタが利用できるようになりました。

 試しに、取引先のレコードを1つ表示してみましょう。すると、名前フィールドに表示されている会社名の横に小さなアイコンが表示されます。ここにマウスを合わせるとポップアップが表示され、その中にLinkedInから取得されたデータが表示されます(ただし、LinkedInは英語圏をベースとしたサービスなので、日本語で会社名を記述している場合は、あまりデータにマッチしないようです)。

 このようにLinkedInコネクタを利用することで、SugarCRMに蓄積されている情報の上にLinkedInなど外部から取得できるサービスのデータを重ねて表示することができました。

オリジナルクラウドコネクタの作成

 クラウドコネクタは、SugarCRMにデフォルトで同梱されているもの以外に、自分で作成してSugarCRMに組み込むこともできます。

 そこで今度は、このクラウドコネクタを自作してみましょう。ここでは、取引先や取引先担当者、リードなど、郵便番号フィールドを持っているモジュールに対し、郵便番号を基に外部サービスから取得した住所情報を重ねて表示するコネクタを作成します()。

注:ここでは、郵便番号を検索するサービスとして、リコーが提供している「ricollab郵便番号検索」(http://zip.ricollab.jp/)を利用します。

 クラウドコネクタを自作するときは、custom/modules/Connectors/connectors以下にコネクタの実装ファイルを配置します。このディレクトリ以下には、以下の2つのディレクトリを作成します。

sources/ext/[サービスの実装基盤]/[コネクタ名]
formatters/ext/[サービスの実装基盤]/[コネクタ名]

 sourcesディレクトリ以下には、コネクタが外部のサービスにアクセスするための処理に関連したファイルを配置します。formattersディレクトリ以下には、コネクタが取得したデータを表示するための処理に関連したファイルを配置します。

 サービスの実装基盤は、サービスにRESTでアクセスする場合は「rest」、SOAPでアクセスする場合は「soap」を指定します。

 コネクタ名はコネクタの名前を指定する任意の文字列です。ここでは、コネクタ名を「zipcode」とします。この例では、「sources/ext/rest/zipcode」と「formatters/ext/rest/zipcode」がこのコネクタに関連するファイルを配置するディレクトリになります。

 ここからは、それぞれのディレクトリに配置するファイルについて説明します。sources以下のディレクトリには、以下のファイルを配置します。

ファイル名 説明
config.php
パラメータ設定ファイル
mapping.php
Beanとコネクタの属性のマッピングファイル
vardefs.php
コネクタの属性の定義ファイル
zipcode.php
コネクタ実装ファイル(ファイル名はコネクタ名+.phpとなる)
languages/[言語].lang.php
言語ファイル

コネクタを構成するファイルの内容

 ここから個々のファイルを見ていきましょう。

 以下のファイル「config.php」は、パラメータの設定ファイルです。ここでは、$config変数以下に、このコネクタの接続パラメータなどを定義していきます。ここで定義されたプロパティは、「コネクタ設定」の「コネクタプロパティの設定」に表示されます。

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
$config = array (
  'name' => ' ZipCode Search',
  'properties' =>
  array (
    'service_url'=>'http://zip.ricollab.jp',
  ),
);
?>

 次に、vardefs.phpを見てみましょう。このファイルではコネクタが持つ属性を定義します。

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
$dictionary['ext_rest_zipcode'] = array(

  'comment' => 'vardefs for zipcode search connector',
  'fields' => array (
    'id' =>
            array (
              'name' => 'id',
              'vname' => 'LBL_ID',
              'type' => 'id',
              'comment' => 'Unique identifier',
              'hidden' => true,
        ),
    'zipcode' => array (
              'name' => 'zipcode',
              'vname' => 'LBL_ZIPCODE',
              'type' => 'varchar',
              'input' => 'zipcode',
              'search' => true,
              'hover' => true,
    ),
    ...
  )
);
?>

 次にmapping.phpを見てみましょう。このファイルでは、vardefs.phpで定義された属性と、対応するBeanの属性とのマッピングを定義します。ここでは、取引先の住所情報とコネクタが取得した住所情報のマッピングを指定しています。ここでの定義が「コネクタフィールドを関連付け」に表示される関連付けの基になります。

<?php
$mapping = array (
  'beans' =>
  array (
    'Accounts' =>
    array (
      'town' => 'billing_address_street',
      'city' => 'billing_address_city',
      'prefecture' => 'billing_address_state',
      'zipcode' => 'billing_address_postalcode',
    ),
    ...
  ),
);
?>

第10回へ
1/2

Index
徹底解剖、SugarCRM(最終回)
 クラウドコネクタで外部サービスのデータを取り込む
Page 1
 クラウドコネクタの機能
 クラウドコネクタの設定
 オリジナルクラウドコネクタの作成
 コネクタを構成するファイルの内容
  Page 2
 コネクタ実装ファイルの作成
 結びに代えて

Linux Square全記事インデックス


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間