استخدم SDK هذا لإنشاء تطبيقات مدعومة بواسطة Watson في Unity.
اعتبارًا من هذا الإصدار الرئيسي، 6.0.0، تمت إزالة Tone Analyzer API استعدادًا للإهمال. إذا كنت ترغب في الاستمرار في استخدام sdk هذا لإجراء مكالمات إلى Tone Analyzer حتى الإيقاف النهائي له، فسيتعين عليك استخدام إصدار سابق. في 24 فبراير 2022، أعلنت شركة IBM عن إيقاف خدمة Tone Analyzer. لن تكون الخدمة متاحة اعتبارًا من 24 فبراير 2023. واعتبارًا من 24 فبراير 2022، لن تتمكن من إنشاء مثيلات جديدة. سيتم دعم المثيلات الموجودة حتى 24 فبراير 2023.
وكبديل، نشجعك على التفكير في الترحيل إلى خدمة فهم اللغة الطبيعية على IBM Cloud. من خلال فهم اللغة الطبيعية، يتم إجراء تحليل النغمات باستخدام نموذج تصنيفات مُعد مسبقًا، والذي يوفر طريقة سهلة لاكتشاف نغمات اللغة في النص المكتوب. لمزيد من المعلومات، راجع الترحيل من نقطة نهاية Watson Tone Analyzer Customer Engagement إلى فهم اللغة الطبيعية.
اعتبارًا من هذا الإصدار الرئيسي، 6.0.0، تمت إزالة NLC API استعدادًا للإهمال. إذا كنت ترغب في الاستمرار في استخدام sdk هذا لإجراء مكالمات إلى NLC حتى الإيقاف النهائي له، فسيتعين عليك استخدام إصدار سابق. في 9 أغسطس 2021، أعلنت شركة IBM عن إيقاف خدمة Natural Language Classifier. لن تكون الخدمة متاحة اعتبارًا من 8 أغسطس 2022. واعتبارًا من 9 سبتمبر 2021، لن تتمكن من إنشاء مثيلات جديدة. سيتم دعم المثيلات الموجودة حتى 8 أغسطس 2022. وسيتم حذف أي مثيل لا يزال موجودًا في ذلك التاريخ.
كبديل، نشجعك على التفكير في الانتقال إلى خدمة فهم اللغة الطبيعية على IBM Cloud التي تستخدم التعلم العميق لاستخراج البيانات والرؤى من النص مثل الكلمات الأساسية والفئات والمشاعر والعواطف وبناء الجملة، بالإضافة إلى النص المتقدم متعدد التسميات إمكانات التصنيف، لتوفير رؤى أكثر ثراءً لعملك أو صناعتك. لمزيد من المعلومات، راجع الهجرة إلى فهم اللغة الطبيعية.
تتغير عناوين URL لنقطة نهاية Watson API الموجودة على watsonplatform.net ولن تعمل بعد 26 مايو 2021. قم بتحديث مكالماتك لاستخدام عناوين URL الأحدث لنقطة النهاية. لمزيد من المعلومات، راجع https://cloud.ibm.com/docs/watson?topic=watson-endpoint-change.
تأكد من أن لديك المتطلبات الأساسية التالية:
قد يؤدي تحديث MacOS إلى Mojave إلى تعطيل الميكروفون لـ Unity. إذا كنت تواجه هذه المشكلة، فيرجى الاطلاع على هذه الإرشادات لتكوين الميكروفون لـ Mojave.
يمكنك الحصول على أحدث إصدار من SDK بالنقر هنا. ستحتاج أيضًا إلى تنزيل أحدث إصدار من IBM Unity SDK Core بالنقر هنا.
انقل المجلدين unity-sdk
و unity-sdk-core
إلى دليل Assets
الخاص بمشروع Unity الخاص بك. اختياري: قم بإعادة تسمية دليل SDK من unity-sdk
إلى Watson
والدليل الأساسي من unity-sdk-core
إلى IBMSdkCore
.
لإنشاء مثيلات لخدمات Watson وبيانات الاعتماد الخاصة بها، اتبع الخطوات أدناه.
ملاحظة: تختلف بيانات اعتماد الخدمة عن اسم المستخدم وكلمة المرور لحساب IBM Cloud الخاص بك.
تحتوي بيانات الاعتماد لكل خدمة إما على username
password
وعنوان url
لنقطة النهاية أو url
لنقطة النهاية و apikey
.
تحذير: أنت مسؤول عن تأمين بيانات الاعتماد الخاصة بك. يمكن لأي مستخدم لديه بيانات اعتماد الخدمة الخاصة بك الوصول إلى مثيلات الخدمة الخاصة بك!
لبدء استخدام خدمة Watson في Unity، اتبع الرابط لرؤية الكود.
يتم ترحيل خدمات Watson إلى مصادقة إدارة الهوية والوصول (IAM) المستندة إلى الرمز المميز.
لمعرفة المصادقة التي يجب استخدامها، قم بعرض بيانات اعتماد الخدمة. يمكنك العثور على بيانات اعتماد الخدمة للمصادقة بنفس الطريقة لجميع خدمات Watson:
url
وإما apikey
أو username
password
.في التعليمات البرمجية الخاصة بك، يمكنك استخدام هذه القيم في منشئ الخدمة أو مع استدعاء الأسلوب بعد إنشاء الخدمة الخاصة بك.
تستخدم بعض الخدمات مصادقة إدارة الهوية والوصول (IAM) المستندة إلى الرمز المميز. تستخدم مصادقة IAM مفتاح واجهة برمجة تطبيقات الخدمة للحصول على رمز وصول تم تمريره مع المكالمة. رموز الوصول صالحة لمدة ساعة تقريبًا ويجب إعادة إنشائها.
يمكنك توفير مفتاح واجهة برمجة تطبيقات خدمة IAM أو رمز وصول :
HasIamTokenData()
إلى true
. Authenticator authenticator ;
AssistantService assistant ;
string versionDate = "<service-version-date>" ;
IEnumerator TokenExample ( )
{
// Create authenticator using the IAM token options
authenticator = new IamAuthenticator ( apikey : "<iam-api-key>" ) ;
while ( ! authenticator . CanAuthenticate ( ) )
yield return null ;
assistant = new AssistantService ( versionDate , authenticator ) ;
assistant . SetServiceUrl ( "<service-url>" ) ;
assistant . ListWorkspaces ( callback : OnListWorkspaces ) ;
}
private void OnListWorkspaces ( DetailedResponse < WorkspaceCollection > response , IBMError error )
{
Log . Debug ( "OnListWorkspaces()" , "Response: {0}" , response . Response ) ;
}
Authenticator authenticator ;
AssistantService assistant ;
string versionDate = "<service-version-date>" ;
void TokenExample ( )
{
// Create authenticator using the Bearer Token
authenticator = new BearerTokenAuthenticator ( "<bearer-token>" ) ;
assistant = new AssistantService ( versionDate , authenticator ) ;
assistant . SetServiceUrl ( "<service-url>" ) ;
assistant . ListWorkspaces ( callback : OnListWorkspaces ) ;
}
private void OnListWorkspaces ( DetailedResponse < WorkspaceCollection > response , IBMError error )
{
Log . Debug ( "OnListWorkspaces()" , "Response: {0}" , response . Response ) ;
}
Authenticator authenticator ;
AssistantService assistant ;
string versionDate = "<service-version-date>" ;
void UsernamePasswordExample ( )
{
Authenticator authenticator = new BasicAuthenticator ( "<username>" , "<password>" , "<url>" ) ;
assistant = new AssistantService ( versionDate , authenticator ) ;
assistant . SetServiceUrl ( "<service-url>" ) ;
}
هناك طريقتان لتزويد أداة المصادقة التي وجدتها أعلاه إلى SDK للمصادقة.
باستخدام ملف بيانات الاعتماد، ما عليك سوى وضع الملف في المكان المناسب وسيقوم SDK بتحليله والمصادقة عليه. يمكنك الحصول على هذا الملف بالنقر فوق الزر "تنزيل" للحصول على بيانات الاعتماد في علامة التبويب "إدارة" الخاصة بمثيل الخدمة الخاص بك.
سيتم تسمية الملف الذي تم تنزيله باسم ibm-credentials.env
. هذا هو الاسم الذي سيبحث عنه SDK ويجب الاحتفاظ به إلا إذا كنت تريد تكوين مسار الملف (المزيد حول ذلك لاحقًا). سوف يقوم SDK بالبحث عن ملف ibm-credentials.env
الخاص بك في الأماكن التالية (بالترتيب):
وطالما قمت بإعداد ذلك بشكل صحيح، فلا داعي للقلق بشأن تعيين أي خيارات مصادقة في التعليمات البرمجية الخاصة بك. لذا، على سبيل المثال، إذا قمت بإنشاء ملف بيانات الاعتماد لمثيل Discovery الخاص بك وتنزيله، فأنت بحاجة فقط إلى القيام بما يلي:
public IEnumerator ExampleAutoService ( )
{
Assistant assistantService = new Assistant ( "2019-04-03" ) ;
// Wait for authorization token
while ( ! assistantService . Authenticator . CanAuthenticate ( ) )
yield return null ;
var listWorkspacesResult = assistantService . ListWorkspaces ( ) ;
}
وهذا كل شيء!
إذا كنت تستخدم أكثر من خدمة واحدة في نفس الوقت في التعليمات البرمجية الخاصة بك وتحصل على ملفين مختلفين من ملفات ibm-credentials.env
، فما عليك سوى تجميع المحتويات معًا في ملف ibm-credentials.env
واحد وستتولى SDK تعيين المصدق لخدماتها المناسبة .
إذا كنت ترغب في تكوين موقع/اسم ملف بيانات الاعتماد الخاص بك، فيمكنك تعيين متغير بيئة يسمى IBM_CREDENTIALS_FILE
. سيكون لهذا الأولوية على المواقع المحددة أعلاه. وإليك كيف يمكنك القيام بذلك:
export IBM_CREDENTIALS_FILE= " <path> "
حيث <path>
يشبه /home/user/Downloads/<file_name>.env
.
إذا كنت تفضل تعيين قيم المصادقة يدويًا في التعليمات البرمجية الخاصة بك، فإن SDK تدعم ذلك أيضًا. تعتمد الطريقة التي ستفعل بها ذلك على نوع المصادق الذي يوفره لك مثيل الخدمة الخاص بك.
مطلوب رد الاتصال النجاح. يمكنك تحديد نوع الإرجاع في رد الاتصال.
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
DiscoveryService discovery ;
string discoveryVersionDate = "<discovery-version-date>" ;
Authenticator discoveryAuthenticator ;
private void Example ( )
{
assistant = new AssistantService ( assistantVersionDate , assistantAuthenticator ) ;
assistant . SetServiceUrl ( "<service-url>" ) ;
discovery = new DiscoveryService ( discoveryVersionDate , discoveryAuthenticator ) ;
discovery . SetServiceUrl ( "<service-url>" ) ;
// Call with sepcific callbacks
assistant . Message (
callback : OnMessage ,
workspaceId : workspaceId
) ;
discovery . ListEnvironments (
callback : OnGetEnvironments
) ;
}
private void OnMessage ( DetailedResponse < MessageResponse > response , IBMError error )
{
Log . Debug ( "ExampleCallback.OnMessage()" , "Response received: {0}" , response . Response ) ;
}
private void OnGetEnvironments ( DetailedResponse < ListEnvironmentsResponse > response , IBMError error )
{
Log . Debug ( "ExampleCallback.OnGetEnvironments()" , "Response received: {0}" , response . Response ) ;
}
نظرًا لأن توقيع رد الاتصال الناجح عام وأن رد الاتصال الفاشل دائمًا له نفس التوقيع، فيمكنك استخدام مجموعة واحدة من عمليات رد الاتصال للتعامل مع مكالمات متعددة.
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
DiscoveryService discovery ;
string discoveryVersionDate = "<discovery-version-date>" ;
Authenticator discoveryAuthenticator ;
private void Example ( )
{
assistant = new AssistantService ( assistantVersionDate , assistantAuthenticator ) ;
assistant . SetServiceUrl ( "<service-url>" ) ;
// Call with generic callbacks
JObject input = new JObject ( ) ;
input . Add ( "text" , "" ) ;
assistant . Message (
callback : OnSuccess ,
workspaceId : workspaceId ,
input : input
) ;
discovery = new DiscoveryService ( discoveryVersionDate , discoveryAuthenticator ) ;
discovery . SetServiceUrl ( "<service-url>" ) ;
discovery . ListEnvironments (
callback : OnSuccess
) ;
}
// Generic success callback
private void OnSuccess < T > ( DetailedResponse < T > resp , IBMError error )
{
Log . Debug ( "ExampleCallback.OnSuccess()" , "Response received: {0}" , resp . Response ) ;
}
يمكنك أيضًا استخدام رد اتصال مجهول
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
private void Example ( )
{
assistant = new AssistantService ( assistantVersionDate , assistantAuthenticator ) ;
assistant . ListWorkspaces (
callback : ( DetailedResponse < WorkspaceCollection > response , IBMError error ) =>
{
Log . Debug ( "ExampleCallback.OnSuccess()" , "ListWorkspaces result: {0}" , response . Response ) ;
} ,
pageLimit : 1 ,
includeCount : true ,
sort : "-name" ,
includeAudit : true
) ;
assistant . SetServiceUrl ( "<service-url>" ) ;
}
يمكنك التحقق من استجابة error
لمعرفة ما إذا كان هناك خطأ في المكالمة.
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
private void Example ( )
{
assistant = new AssistantService ( versionDate , authenticator ) ;
assistant . Message ( OnMessage , workspaceId ) ;
}
private void OnMessage ( DetailedResponse < MessageResponse > response , IBMError error )
{
if ( error == null )
{
Log . Debug ( "ExampleCallback.OnMessage()" , "Response received: {0}" , response . Response ) ;
}
else
{
Log . Debug ( "ExampleCallback.OnMessage()" , "Error received: {0}, {1}, {3}" , error . StatusCode , error . ErrorMessage , error . Response ) ;
}
}
يمكنك إرسال رؤوس الطلبات المخصصة عن طريق إضافتها إلى الخدمة.
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
void Example ( )
{
assistant = new AssistantService ( assistantVersionDate , assistantAuthenticator ) ;
// Add custom header to the REST call
assistant . WithHeader ( "X-Watson-Metadata" , "customer_id=some-assistant-customer-id" ) ;
assistant . Message ( OnSuccess , "<workspace-id>" ) ;
}
private void OnSuccess ( DetailedResponse < MessageResponse > response , IBMError error )
{
Log . Debug ( "ExampleCallback.OnMessage()" , "Response received: {0}" , response . Response ) ;
}
يمكنك الحصول على رؤوس الاستجابة في كائن headers
في DetailedResponse.
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
void Example ( )
{
assistant = new AssistantService ( assistantVersionDate , assistantAuthenticator ) ;
assistant . Message ( OnMessage , "<workspace-id>" ) ;
}
private void OnMessage ( DetailedResponse < MessageResponse > response , IBMError error )
{
// List all headers in the response headers object
foreach ( KeyValuePair < string , object > kvp in response . Headers )
{
Log . Debug ( "ExampleCustomHeader.OnMessage()" , "{0}: {1}" , kvp . Key , kvp . Value ) ;
}
}
تقوم كل مكالمة SDK بإرجاع استجابة بمعرف المعاملة في رأس X-Global-Transaction-Id
. يساعد هذا المعرف معًا، منطقة مثيل الخدمة، فرق الدعم في استكشاف المشكلات وإصلاحها من السجلات ذات الصلة.
public void ExampleGetTransactionId ( )
{
AssistantService service = new AssistantService ( "{version-date}" ) ;
service . ListWorkspaces (
callback : ( DetailedResponse < Workspace > response , IBMError error ) =>
{
if ( error != null )
{
Log . Debug ( "AssistantServiceV1" , "Transaction Id: {0}" , error . ResponseHeaders [ "X-Global-Transaction-Id" ] ) ;
}
else
{
Log . Debug ( "AssistantServiceV1" , "Transaction Id: {0}" , response . Headers [ "X-Global-Transaction-Id" ] ) ;
}
}
) ;
}
ومع ذلك، لا يكون معرف المعاملة متاحًا عندما لا تُرجع واجهة برمجة التطبيقات (API) استجابة لسبب ما. في هذه الحالة، يمكنك تعيين معرف المعاملة الخاص بك في الطلب. على سبيل المثال، استبدل <my-unique-transaction-id>
في المثال التالي بمعرف معاملة فريد.
public void ExampleSetTransactionId ( )
{
AssistantService service = new AssistantService ( "{version-date}" ) ;
service . WithHeader ( "X-Global-Transaction-Id" , "<my-unique-transaction-id>" ) ;
service . ListWorkspaces (
callback : ( DetailedResponse < Workspace > response , IBMError error ) =>
{
if ( error != null )
{
Log . Debug ( "AssistantServiceV1" , "Transaction Id: {0}" , error . ResponseHeaders [ "X-Global-Transaction-Id" ] ) ;
}
else
{
Log . Debug ( "AssistantServiceV1" , "Transaction Id: {0}" , response . Headers [ "X-Global-Transaction-Id" ] ) ;
}
}
) ;
}
قامت خدمات Watson بترقية مضيفيها إلى TLS 1.2. يحتوي موقع دالاس على نقطة نهاية TLS 1.0 تعمل للبث. للبث في مناطق أخرى، استخدم Unity 2018.2 وقم بتعيين إصدار وقت تشغيل البرمجة النصية في إعدادات البناء على ما .NET 4.x equivalent
لدعم تحويل الكلام إلى نص في الإصدارات السابقة من Unity، قم بإنشاء المثيل في موقع Dallas.
يمكنك تعطيل التحقق من طبقة المقابس الآمنة (SSL) عند إجراء مكالمة خدمة.
AssistantService assistant ;
string assistantVersionDate = "<assistant-version-date>" ;
Authenticator assistantAuthenticator ;
string workspaceId = "<workspaceId>" ;
void Example ( )
{
authenticator . DisableSslVerification = true ;
assistant = new AssistantService ( assistantVersionDate , assistantAuthenticator ) ;
// disable ssl verification
assistant . DisableSslVerification = true ;
}
إذا كان مثيل الخدمة الخاص بك من ICP4D، فيما يلي طريقتان لتهيئة الخدمة المساعدة.
username
password
و icp4d_url
و authentication_type
سيقوم SDK بإدارة الرمز المميز للمستخدم
CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator ( "<url>" , "<username>" , "<password>" ) ;
while ( ! authenticator . CanAuthenticate ( ) )
{
yield return null ;
}
service = new AssistantService ( versionDate , authenticator ) ;
BearerTokenAuthenticator = new BearerTokenAuthenticator ( "<accessToken>" ) ;
while ( ! authenticator . CanAuthenticate ( ) )
{
yield return null ;
}
service = new AssistantService ( versionDate , authenticator ) ;
لا يدعم Watson Unity SDK IBM Cloud Private لأن الاتصال عبر الوكيل غير مدعوم في UnityWebRequest.
يمكن العثور على الوثائق هنا. يمكنك أيضًا الوصول إلى الوثائق عن طريق تحديد مرجع API في قائمة Watson ( Watson -> مرجع API ).
يمكنك مشاهدة مقاطع فيديو البدء الخاصة بـ IBM Watson SDK for Unity على YouTube.
إذا كانت لديك مشكلات مع واجهات برمجة التطبيقات (APIs) أو كان لديك سؤال حول خدمات Watson، راجع Stack Overflow.
يمكنك العثور على المزيد من المشروعات مفتوحة المصدر على صفحة IBM Github.
هذه المكتبة مرخصة تحت Apache 2.0. نص الترخيص الكامل متاح في LICENSE.
انظر CONTRIBUTING.md.
نود أن نسلط الضوء على المشاريع الرائعة مفتوحة المصدر التي تستخدم حزمة تطوير البرامج (SDK) هذه! إذا كنت ترغب في إضافة مشروعك إلى القائمة، فلا تتردد في طرح مشكلة تربطنا به.