VTAP JavaScript API の機能強化

Vtiger CRM を扱う開発者とパートナーを支援するために設計された、VTAP JavaScript API の大幅な機能強化を発表できることを嬉しく思います。

これらの改善は、特にイベント モジュールと RelatedRecords API 内でのプラットフォームの柔軟性と機能性の強化に重点を置いています。以下では、動的で応答性の高い CRM ソリューションを多数作成できるようにする主要な更新の概要を示します。

機能強化 1: RelatedRecords API の追加フィールドのサポート

VTAP RelatedRecords APIを拡張し、以下のサポートを追加しました。 追加フィールド パラメータを使用すると、デフォルトで提供されるフィールド以外の追加のフィールドを取得できます。この機能強化により、関連レコードを操作する際の柔軟性が向上し、より豊富なデータ操作が可能になります。

VTAP.詳細.関連レコード

このAPIは、指定されたモジュールの関連レコードを取得します。デフォルトでは、クイック作成、ヘッダーなどで有効になっているフィールドが含まれます。新しい 追加フィールド パラメータを使用すると、応答に含める追加のフィールドを指定できるようになり、関連データに関するより詳細な情報が得られます。

ユースケース例: 連絡先モジュールを使用していて、次のようなフィールドを含む関連するケースレコードを取得したいとします。 ケースチャンネル and スラステータスこれらはデフォルトのレスポンスの一部ではありません。これらのフィールドを API リクエストに簡単に含めることができるようになりました。


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['casechannel', 'slastatus'] })

    .then((case_records) => {

        // Process the retrieved case records with extra fields

    });


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['casechannel', 'slastatus'] })

    .then((case_records) => {

        // Process the retrieved case records with extra fields

    });

 

機能強化 2: RelatedRecords API でのラベル列のサポート

上記の機能強化に加えて、VTAP RelatedRecords API のラベル列のサポートも追加されました。この改善により、API 応答にレコード名 (ラベル) を含めることができるようになり、関連レコードの識別と操作が容易になります。

VTAP.詳細.レコード

これまで、RelatedRecords API は、レコード名を含むラベル列の組み込みをサポートしていませんでした。現在は、extrafields パラメータを使用して、API 呼び出しでこのラベルを要求できます。

ユースケースの例: 関連するケース レコードを取得するときに、簡単に識別できるようにレコードの名前を含める必要がある場合があります。ラベルを追加フィールドとして渡すだけです。

 

機能強化 2: RelatedRecords API でのラベル列のサポート

上記の機能強化に加えて、VTAP RelatedRecords API のラベル列のサポートも追加されました。この改善により、API 応答にレコード名 (ラベル) を含めることができるようになり、関連レコードの識別と操作が容易になります。

VTAP.詳細.レコード

これまで、RelatedRecords API は、レコード名を含むラベル列の組み込みをサポートしていませんでした。現在は、extrafields パラメータを使用して、API 呼び出しでこのラベルを要求できます。

ユースケースの例: 関連するケース レコードを取得するときに、簡単に識別できるようにレコードの名前を含める必要がある場合があります。ラベルを追加フィールドとして渡すだけです。


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['label'] })

    .then((case_records) => {

        // The response now includes the label (name) of each case

    });


  

VTAP.Detail.RelatedRecords("Cases", { 'extrafields': ['label'] })

    .then((case_records) => {

        // The response now includes the label (name) of each case

    });

 

これらの機能強化は、Vtiger CRM プラットフォーム上で動的なエンタープライズ グレードのアプリケーションを構築するための強力なツールを提供するという当社の継続的な取り組みの一環です。これらの新機能を調べてプロジェクトに統合し、全体的なユーザー エクスペリエンスを向上させることをお勧めします。

今後のアップデートにご期待ください。そして、楽しいコーディングを!

 

これらの機能強化は、Vtiger CRM プラットフォーム上で動的なエンタープライズ グレードのアプリケーションを構築するための強力なツールを提供するという当社の継続的な取り組みの一環です。これらの新機能を調べてプロジェクトに統合し、全体的なユーザー エクスペリエンスを向上させることをお勧めします。

今後のアップデートにご期待ください。そして、楽しいコーディングを!

 
 
 

VTAP のお客様の使用例

 
 

ある顧客から、通話と会議以外のカスタム タイプのイベントについては、イベント モジュールに招待者ブロックを表示しないよう要求がありました。内部イベントに使用されるカスタム タイプのイベントでは、画面上のスペースが無駄に占有されていました。

イベントモジュールでのイベント処理の強化

VTAP イベント API に、イベント モジュール内の招待者ブロックの表示を制御する機能が追加されました。この機能強化により、アプリケーションの特定のニーズに合わせてユーザー インターフェイスを正確に制御できるようになります。

  • VTAP.イベント.レジスタ: この関数を使用すると、クライアント側のイベントを登録し、ユーザー インターフェイスでこれらのイベントが発生したときにコールバックを受け取ることができます。サポートされているイベントの包括的なリストは、こちらで確認できます。
  • VTAP.イベント.トリガー: この関数は、Vtiger UI によって提供されるイベントを強制的に実行します。イベント モジュールに招待者ブロックを表示および非表示にする 2 つの新しいイベントを導入しました。
  • EVENT_SHOW_招待: 招待者ブロックの表示をトリガーします。
  • EVENT_HIDE_INVITEES: 招待者ブロックを非表示にします。

これらのイベントを利用して、ユーザー入力に基づいて表示を動的に制御できます。他のアクティビティ タイプでは、招待者ブロックを非表示にして、ユーザー エクスペリエンスを合理化できます。

イベント モジュールの VTAP スクリプトを Invitees という名前で作成し、以下の関数をコピーして、会議と通話以外のアクティビティ タイプの Invitees ブロックを非表示にします。

 

ある顧客から、通話と会議以外のカスタム タイプのイベントについては、イベント モジュールに招待者ブロックを表示しないよう要求がありました。内部イベントに使用されるカスタム タイプのイベントでは、画面上のスペースが無駄に占有されていました。

イベントモジュールでのイベント処理の強化

VTAP イベント API に、イベント モジュール内の招待者ブロックの表示を制御する機能が追加されました。この機能強化により、アプリケーションの特定のニーズに合わせてユーザー インターフェイスを正確に制御できるようになります。

  • VTAP.イベント.レジスタ: この関数を使用すると、クライアント側のイベントを登録し、ユーザー インターフェイスでこれらのイベントが発生したときにコールバックを受け取ることができます。サポートされているイベントの包括的なリストは、こちらで確認できます。
  • VTAP.イベント.トリガー: この関数は、Vtiger UI によって提供されるイベントを強制的に実行します。イベント モジュールに招待者ブロックを表示および非表示にする 2 つの新しいイベントを導入しました。
  • EVENT_SHOW_招待: 招待者ブロックの表示をトリガーします。
  • EVENT_HIDE_INVITEES: 招待者ブロックを非表示にします。

これらのイベントを利用して、ユーザー入力に基づいて表示を動的に制御できます。他のアクティビティ タイプでは、招待者ブロックを非表示にして、ユーザー エクスペリエンスを合理化できます。

イベント モジュールの VTAP スクリプトを Invitees という名前で作成し、以下の関数をコピーして、会議と通話以外のアクティビティ タイプの Invitees ブロックを非表示にします。


  

var Events_Component_Invitess = VTAP.Component.Core.extend({

    mounted() {

        VTAP.Event.Register("CREATE_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

        VTAP.Event.Register("EDIT_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

    },

    methods : {

        observeEventsFormActivityType(data) {

            if (data.module == "Events") {

                setTimeout(() => {

                    var element = jQuery('select[name="activitytype"]');

                    if (element.length) {

                        this.handleEventsFormActivityType(element.get(0).value);

                        element.on('change', () => { this.handleEventsFormActivityType(element.get(0).value); }); /* changes */

                    } else {

                        if(data && data.record) {

                            VTAP.Api.Get('records', {

                                'module': 'Events',

                                'id': data.record

                            }, (error, response) => {

                                this.handleEventsFormActivityType(response.activitytype);

                            });

                        }

                    }

                }, 500);

            }

        },

        handleEventsFormActivityType(activityType) {

            if (activityType == "Call" || activityType == "Meeting") {

                VTAP.Event.Trigger("EVENT_SHOW_INVITEES");

            } else {

                VTAP.Event.Trigger("EVENT_HIDE_INVITEES");

            }

        }

    }

});


  

var Events_Component_Invitess = VTAP.Component.Core.extend({

    mounted() {

        VTAP.Event.Register("CREATE_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

        VTAP.Event.Register("EDIT_MODAL_SHOWN", (data) => { this.observeEventsFormActivityType(data); });

    },

    methods : {

        observeEventsFormActivityType(data) {

            if (data.module == "Events") {

                setTimeout(() => {

                    var element = jQuery('select[name="activitytype"]');

                    if (element.length) {

                        this.handleEventsFormActivityType(element.get(0).value);

                        element.on('change', () => { this.handleEventsFormActivityType(element.get(0).value); }); /* changes */

                    } else {

                        if(data && data.record) {

                            VTAP.Api.Get('records', {

                                'module': 'Events',

                                'id': data.record

                            }, (error, response) => {

                                this.handleEventsFormActivityType(response.activitytype);

                            });

                        }

                    }

                }, 500);

            }

        },

        handleEventsFormActivityType(activityType) {

            if (activityType == "Call" || activityType == "Meeting") {

                VTAP.Event.Trigger("EVENT_SHOW_INVITEES");

            } else {

                VTAP.Event.Trigger("EVENT_HIDE_INVITEES");

            }

        }

    }

});

 
 

サインアップして最新のアップデートを受け取りましょう!