ライブ・チャットへの顧客情報の受渡し
会話ロギングが有効な場合は、チャット履歴全体が自動的にOracle B2C Serviceに渡されます。チャット履歴に加えて、特定の顧客情報を送信することもできます。
- インシデントID
- チャット顧客情報:スキルでは次のチャット顧客情報をOracle B2C Serviceに渡すことができます。
- 電子メール・アドレス
- 名前
- 姓
- 接続
- 組織
- カテゴリ
- 製品
スキルではプロファイル値を使用してこれらのチャット顧客フィールドを自動的に移入および送信します。次の値を設定するために何かをする必要はありません:
- 電子メール・アドレス
- 名前
- 姓
- インシデント・カスタム・フィールド:インシデント・タイプのOracle B2C Serviceカスタム・フィールドの値を渡できます。
カスタム・フィールドについて学習するには、Oracle B2C Serviceの使用のカスタム・フィールドの概要を参照してください。
20.1より前に作成されたエージェント統合チャネルを使用している場合、またはチャネルで19Aより前のOracle B2C Serviceインスタンスに接続する場合は、インタフェース情報を渡すこともできます。バージョン20.1以上で作成され、Oracle B2C Service 19A以上に接続するチャネルでは、チャネルのURLにインタフェースIDを含めます。
ライブ・エージェントに顧客情報を送信するには、エージェント統合コンポーネントの「カスタム・プロパティ」プロパティでマップを渡します。マップの最上位構造を次に示します:
incidentID: # type int
customerInformation: # chat customer information object
customFields: # incident custom fields object${mapVariableName.value}顧客情報を送信ライブ・エージェントにアセンブルする例は、カスタム・プロパティ・オブジェクトのアセンブルを参照してください。
incidentIDプロパティ
ライブ・エージェントにインシデントIDを渡すには、「カスタム・プロパティ」マップにincidentIDプロパティを追加します。
ヒント:
既存のインシデントにチャット・リクエストを関連付ける場合は、次の例のようにRESTリクエストを送信することで、カスタム・コンポーネントを作成してincidentIdを取得できます。このRESTリクエストは、一致する電子メール・アドレスを持つ連絡先に対する最新のインシデントを取得します。https://<URL>/services/rest/connect/latest/incidents?q=primaryContact.ParentContact.Emails.EmailList.Address like 'email@gmail.com'&orderBy=createdTime:desc&limit=1レスポンス本文には、インシデントIDを含むhrefリンクがあります:
{
"items": [
{
"id": 26302,
"lookupName": "200116-000003",
"createdTime": "2020-01-16T13:08:25.000Z",
"updatedTime": "2020-01-16T20:25:21.000Z",
"links": [
{
"rel": "canonical",
"href": "https://<URL>/services/rest/connect/v1.4/incidents/26302"
}
]
}
],カスタム・コンポーネントについて学習するには、バックエンド統合を参照してください。Oracle B2C Service REST APIについて学習するには、Oracle B2C ServiceのREST APIを参照してください。
標準customerInformationオブジェクト
この項では、バージョン20.01以降で作成され、Oracle B2C Serviceバージョン19A以降に接続するエージェント統合チャネルを使用するスキル用のcustomerInformationオブジェクトについて説明します。
「カスタム・プロパティ」マップでcustomerInformationオブジェクトを使用して、次のチャット顧客情報を収集できます:
- incidentID:
int. -
eMailAddress:
string. 最大80文字スキルは、対応する.profileプロパティ(ユーザー・コンテキストのプロファイル・スコープ変数を参照)を自動的に設定し、Oracle B2C Serviceに渡します。 -
firstName:
string. 最大80文字スキルは、対応する.profileプロパティ(ユーザー・コンテキストのプロファイル・スコープ変数を参照)を自動的に設定し、Oracle B2C Serviceに渡します。 -
lastName:
string. 最大80文字スキルは、対応する.profileプロパティ(ユーザー・コンテキストのプロファイル・スコープ変数を参照)を自動的に設定し、Oracle B2C Serviceに渡します。 -
contactID:
idサブプロパティでint型の値を渡します。 -
organizationID:
idサブプロパティでint型の値を渡します。 -
productID:
idサブプロパティでint型の値を渡します。 -
categoryID:
idサブプロパティでint型の値を渡します。
ヒント:
Oracle B2C Service REST APIを使用すると、顧客情報フィールドの有効な値を表示できます。たとえば、このGETリクエストでは、カテゴリがリストされます:curl --request GET \
--url https://<sitename.domain>/services/rest/connect/latest/serviceCategories \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'レガシーcustomerInformationオブジェクト
この項では、20.01より前に作成されたエージェント統合チャネルか、19Aより前のOracle B2C Serviceインスタンスに接続するチャネルを使用するスキル用のcustomerInformationオブジェクトについて説明します。
カスタム・プロパティ・マップでcustomerInformationオブジェクトを使用して、インタフェースID、連絡先ID、カテゴリIDなどのチャット顧客情報を渡します。customerInformationオブジェクトには、http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=serverにあるOracle B2C Service WSDLのChat Customer Informationセクションで定義されているフィールドを含めることができます。
オブジェクトでは、名前の最初の文字を小文字に変更し、単純なフィールドの名前をすべて小文字に変更します。
interfaceIDオブジェクトを渡さない場合、スキルではデフォルトのid:{id: 1}が使用されます。インタフェースがチャット対応でない場合、開始ハンドシェイクは失敗します。My ServicesからアクセスするOracle B2C Service構成アシスタントを使用して、インタフェースがチャットに対応しているかどうかを確認できます。
WSDLのChat Customer Informationセクションに記述されているEMailAddress、FirstNameおよびLastNameフィールドを定義できますが、スキルにより、これらの値は対応する.profileプロパティ(ユーザー・コンテキストのプロファイル・スコープ変数を参照)から自動的に設定されます。
ヒント:
Oracle B2C Service REST APIを使用すると、顧客情報フィールドの有効な値を表示できます。たとえば、次のGETリクエストでは、インタフェースIDと名前がリストされます:curl --request GET \
--url https://<sitename.domain>/services/rest/connect/latest/siteInterfaces \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'次のGETリクエストでは、カテゴリがリストされます:
curl --request GET \
--url https://<sitename.domain>/services/rest/connect/latest/serviceCategories \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'前述のとおり、customerInformationマップ構造は、次のアドレスのWSDLに示されているChat Customer Information構造に準拠している必要があります:
http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=serverWSDLからの抜粋を次に示します:
<!-- ============================== -->
<!-- Chat Customer Information -->
<!-- ============================== -->
<xs:complexType name="ChatCustomerInformation">
<xs:sequence>
<xs:element name="EMailAddress" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="80"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="FirstName" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="80"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LastName" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="80"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="InterfaceID" type="rnccm:NamedID" minOccurs="1" maxOccurs="1"/>
<xs:element name="ContactID" type="rnccm:ID" minOccurs="0" maxOccurs="1" />
<xs:element name="OrganizationID" type="rnccm:ID" minOccurs="0" maxOccurs="1" />
<xs:element name="Question" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ProductID" type="rnccm:ID" minOccurs="0" maxOccurs="1"/>
<xs:element name="CategoryID" type="rnccm:ID" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType> 一部のオブジェクトはrnccm:ID型であり、次の抜粋で定義されています。オブジェクトにlong型のidフィールドが含まれることに注意してください。
<xs:element name="ID" type="ID"/>
<xs:complexType name="ID">
<xs:attribute name="id" type="xs:long" use="optional"/>
</xs:complexType> InterfaceIDはrnccm:NamedID型です。このオブジェクトにはID (long)、Name (string)または両方が含まれることに注意してください。
<xs:element name="NamedID" type="NamedID"/>
<xs:complexType name="NamedID">
<xs:sequence>
<xs:element name="ID" type="ID" minOccurs="0" maxOccurs="1"/>
<xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>大文字化けは、WSDLとカスタム・プロパティ・マップで異なります。マップでは、オブジェクト名の最初の文字は小文字です(Pascalの場合)。たとえば、WSDLのProductIDは、マップ・オブジェクトのproductIDになります。単純フィールド名はすべて小文字です(たとえば、Nameがnameになります)。
標準customFieldsオブジェクト
この項では、バージョン20.01以降で作成され、Oracle B2C Serviceバージョン19A以降に接続するエージェント統合チャネルを使用するスキル用のcustomFieldsオブジェクトについて説明します。
「カスタム・プロパティ」マップでcustomFieldsオブジェクトを使用して、インシデント・タイプのOracle B2C Serviceカスタム・フィールドの値を渡します。
customFieldsオブジェクトは、次のプロパティを含むマップの配列です。
-
シンプル・フィールド:
-
name:c$が先頭に付いたフィールドの列名(小文字)。 -
type:許容される値は、BOOLEAN、DATE、DATETIME、INTEGER、LONG、STRINGおよびDECIMALです。 -
value:フィールドの値。
-
-
メニュー・フィールド:
-
name:c$が先頭に付いたフィールドの列名(小文字)。 -
value:フィールドのIDまたはメニュー・アイテムのテキストに値を設定できます。このオブジェクトにはtypeプロパティがないことに注意してください。ヒント:
メニュー・アイテムのIDを見つけるには、Oracle B2C Serviceデスクトップ・サービス・コンソールからカスタム・フィールドの詳細ページを開きます。メニュー・アイテムの上にカーソルを置き、数秒待機します。ツールチップが表示され、そのアイテムのIDが表示されます。
-
オブジェクトの値の例を次に示します。
[
{
"name" : "c$text_field",
"type" : "STRING",
"value" : "SILVER"
},
{
"name" : "c$text_area",
"type" : "STRING",
"value" : "My package arrived but there were no contents in the box. Just bubble wrap."
},
{
"name" : "c$integer",
"type" : "INTEGER",
"value" : 21
},
{
"name" : "c$yes_no",
"type" : "BOOLEAN",
"value": 1
},
{
"name" : "c$date_field",
"type" : "DATE",
"value" : "2020-02-04T00:00:00+00:00"
},
{
"name" : "c$date_time",
"type" : "DATETIME",
"value" : "2020-02-04T21:24:18+00:00"
},
{
"name" : "c$menu",
"value" : "12"
}
]ヒント:
次のGETリクエストを送信できます。このリクエストは、RightNowオブジェクト問合せ(ROQL)を使用して、列名のリストを取得します:curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.*%20from%20Incidents \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'カスタム・フィールドの有効な値を取得するには、次のようにRightNowオブジェクト問合せ(ROQL)を使用するGETリクエストを送信します:
curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.skillType%20from%20Incidents%20where%20CustomFields.c.skillType%20IS%20NOT%20NULL \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'レガシーcustomFieldsオブジェクト
この項では、20.01より前のエージェント統合チャネルか、19Aより前のOracle B2C Serviceインスタンスに接続するチャネルを使用するスキル用のcustomFieldsオブジェクトについて説明します。
「カスタム・プロパティ」マップでcustomFieldsオブジェクトを使用して、インシデント・タイプのOracle B2C Serviceカスタム・フィールドの値を渡します。
customFieldsオブジェクトは、name、dataTypeおよびdataValueプロパティを含むマップの配列です。nameプロパティの値は、c$が先頭に付いたフィールドの小文字の列名です。
オブジェクトの値の例を次に示します。
[
{
"name" : "c$da_text_field",
"dataType" : "STRING",
"dataValue" : {
"stringValue": "SILVER"
}
},
{
"name" : "c$da_text_area",
"dataType" : "STRING",
"dataValue" : {
"stringValue": "This is a very long string that is more than 32 characters."
}
},
{
"name" : "c$da_integer",
"dataType" : "INTEGER",
"dataValue" : {
"integerValue" :21
}
},
{
"name" : "c$da_menu",
"dataType" : "NAMED_ID",
"dataValue" : {
"namedIDValue": {
"name" : "Item 1"
}
}
},
{
"name" : "c$da_is_from_skill",
"dataType" : "BOOLEAN",
"dataValue" : {
"booleanValue" : true
}
},
{
"name" : "c$da_date",
"dataType" : "DATE",
"dataValue" : {
"dateValue" : "2019-10-26"
}
},
{
"name" : "c$da_datetime",
"dataType" : "DATETIME",
"dataValue" : {
"dateTimeValue" : "2019-10-26T21:32:52"
}
}
]ヒント:
次のGETリクエストを送信できます。このリクエストは、RightNowオブジェクト問合せ(ROQL)を使用して、列名のリストを取得します:curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.*%20from%20Incidents \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'カスタム・フィールドの有効な値を取得するには、次のようにRightNowオブジェクト問合せ(ROQL)を使用するGETリクエストを送信します:
curl --request GET \
--url https://<site.domain>/services/rest/connect/latest/queryResults/?query=select%20CustomFields.c.skillType%20from%20Incidents%20where%20CustomFields.c.skillType%20IS%20NOT%20NULL \
--header 'authorization: Basic <base64-encoded-username+:+password>' \
--header 'osvc-crest-application-context: <some-comment>'http://<sitename.domain>/services/soap/connect/chat_soap?wsdl=serverにあるOracle B2C Service WSDLのGenericField定義では、dataType構造とdataValue構造が記述されています:
<xs:element name="GenericField" type="GenericField"/>
<xs:complexType name="GenericField">
<xs:sequence>
<xs:element name="DataValue" type="DataValue" minOccurs="1" maxOccurs="1" nillable="true"/>
</xs:sequence>
<xs:attribute name="dataType" type="DataTypeEnum" use="optional"/>
<xs:attribute name="name" type="xs:string" use="required"/>customerInformationフィールドと同様に、カスタム・プロパティ・マップの対応するものにも同じケースが適用されます(たとえば、WSDLのDataValueはマップではdataValueです)。
カスタム・プロパティ・オブジェクトのアセンブル
カスタム・プロパティ・オブジェクトの作成に使用できるアプローチは多数あります。次のステップでは、プロパティ・グループごとに個別の変数を作成し、それらをマップに統合して、これを行う方法を示します。
- カスタム・プロパティ・オブジェクトに含めるパートの変数を宣言します:
- カスタム・プロパティにインシデントIDを含める場合は、インシデントIDのタイプ
Integerの変数を定義します。この例では、これをcustomerTicketIdと呼びます。 - カスタム・プロパティに
customerInformationプロパティを含める場合は、List型の変数を定義して、これらのプロパティを保持します。この例では、これをcustInfoと呼びます。 - カスタム・プロパティに
customFieldsプロパティのいずれかを含める場合は、Map型の変数を定義して、これらのプロパティを保持します。この例では、これをcustFieldsと呼びます。
フロー変数を宣言するには、フロー・デザイナ・ページで特定のフローを選択し、「構成」タブをクリックして、「変数の追加」をクリックします。
- カスタム・プロパティにインシデントIDを含める場合は、インシデントIDのタイプ
- 「変数の設定」コンポーネントで、作成した変数に値を割り当てます。
customerTicketIdには、整数に解決される値または式を使用します。custInfoには、次のようなJSONマップとして値を指定します:{ "contactID" : { "id" : "${contactId}" }, "organizationID" : { "id" : "${organizationId}" }, "productID" : { "id" : "${productId}" }, "categoryID" : { "id" : "${categoryId}" } }custFieldsには、次のようなオブジェクトのJSON配列として値を指定します:[ { "name" : "c$text_field", "type" : "STRING", "value" : "SILVER" }, { "name" : "c$text_area", "type" : "STRING", "value" : "My package arrived but there were no contents in the box. Just bubble wrap." }, { "name" : "c$integer", "type" : "INTEGER", "value" : 21 }, { "name" : "c$yes_no", "type" : "BOOLEAN", "value": 1 }, { "name" : "c$date_field", "type" : "DATE", "value" : "2020-02-04T00:00:00+00:00" }, { "name" : "c$date_time", "type" : "DATETIME", "value" : "2020-02-04T21:24:18+00:00" }, { "name" : "c$date_time", "type" : "DATETIME", "value" : "2020-02-04T21:24:18+00:00" }, { "name" : "c$menu", "value" : "12" } ]
- 変数の設定コンポーネントを使用して、前のステップの変数を1つのマップ変数に統合します。
たとえば、変数に
liveChatInfoという名前を付けて、次の値を指定できます。{ "incidentId" : "${customerTicketId}", "customerInformation" : "${custInfo.value}", "customFields" : "${custFields.value}" } - フローのエージェント開始コンポーネントで、「カスタム・プロパティ」プロパティの値を、統合マップ変数の値(
${liveChatInfo.value}など)に設定します。