SugarCRMのSOAP操作について
フリーの顧客関係管理(CRM:Customer Relation Management)であるSugarCRMのデータを外部から操作する方法として、SOAP(Simple Object Access Protocol)という方法があります。
SOAPというのは、簡単に言えばHTTP上でXMLを使って、サーバ同士がデータをやりとりする方法の事です。
実際にはライブラリを使うので、SOAPの文法は知らなくても使えます。
ファイルのインポート・エクスポートに比べて、リアルタイムで自動化できる点がメリットです。
ただしPHPなどでコーディングしないといけません。以下がサンプルソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
<?php $url = "http://www.sample.com/sugarcrm/soap.php?wsdl"; $username = "admin"; $password = "admin"; //SOAPのライブラリファイルをダウンロードしてインクルード require_once("./lib/nusoap.php"); //WSDLで通信オブジェクトを生成 $client = new nusoap_client($url, 'wsdl'); //エラーがあったら表示して終了 $err = $client->getError(); if ($err) { echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>'; exit(); } //ログイン配列を生成 $login_parameters = array( 'user_auth' => array( 'user_name' => $username, 'password' => md5($password), 'version' => '1' ), 'application_name' => 'SoapTest', 'name_value_list' => array( ), ); //ログイン $login_result = $client->call('login', $login_parameters); //ログイン結果を表示 echo '<pre>'; print_r($login_result); echo '</pre>'; //ログイン成功ならセッションIDが返ってくるので、それを使ってDB操作 $session_id = $login_result['id']; //テーブル名や検索条件を指定して、レコード検索 $search_array = array( 'session' => $session_id, 'module_name' => 'Meetings', 'query' => 'date(meetings.date_end) = \'2012-12-31\'', 'order_by' => 'meetings.name', 'offset' => 0, 'select_fields' => array('status', 'date_end'), 'max_results' => 10, 'deleted' => 0 ); //検索結果を表示 $search_result = $client->call('get_entry_list', $search_array); echo "search_result="; print_r($search_result); //条件を指定して、UPDATE操作 $new_values = array(); foreach ($search_result['entry_list'] as $meeting) { $new_value = array( array('name'=>'id', 'value'=>$meeting['id']), array('name'=>'status', 'value'=>'Held') ); $new_values[]=$new_value; } $update_array = array( 'session' => $session_id, 'module_name' => 'Meetings', 'name_value_lists' => $new_values ); //UPDATE結果を表示 $result = $client->call('set_entries', $update_array); echo "update_result="; print_r($result); //最後にちゃんとログアウト操作をする $result = $client->call('logout', array('session'=>$session_id)); //ログアウト結果を表示 echo "logout_result="; print_r($result); ?> |