यह सुविधा, Business Messages में अपनी स्थान-भाषा और Google Translate की स्मार्ट और ऑटोमेटेड सिस्टम की मदद से काम करती है का इस्तेमाल कर रहे हैं, तो आप में उपयोगकर्ताओं से बातचीत करके अपने एजेंट की पहुंच बढ़ा सकते हैं उनकी पसंदीदा भाषा चुनें. इस ट्यूटोरियल में कॉन्सेप्ट प्रूफ़ ऑफ़ कॉन्सेप्ट की जानकारी दी गई है इसमें Business Messages के वेबहुक के साथ Google Translate को इंटिग्रेट किया गया है.
आपको इनकी ज़रूरत होगी
शुरू करने के लिए, आपको नीचे दी गई कुछ चीज़ें तैयार करनी होंगी:
- Business Messages के साथ पूरा और मंज़ूरी पा चुका पार्टनर रजिस्ट्रेशन. ज़्यादा जानकारी के लिए, पार्टनर गाइड के तौर पर रजिस्टर करें.
- Business Messages का एजेंट, जिसमें सेवा खाते की कुंजी भी शामिल होगी. बनाने के लिए एजेंट के लिए, अपनी पहली एजेंट गाइड बनाएं देखें.
- ऐसा कंप्यूटर जिसमें Google Cloud SDK और Node.js (10 या इसके बाद का वर्शन) इंस्टॉल किया गया हो. पक्का करें कि आपने लॉग इन किया हो और इसमें अपना ऐक्टिव प्रोजेक्ट आईडी सेट करें Google Cloud SDK टूल.
- जांच के लिए Android या iOS डिवाइस.
कोड प्राप्त करें
इस ट्यूटोरियल में आपको Google के साथ इंटिग्रेट होने वाले वेबहुक कोड के नमूने के बारे में जानकारी दी गई है अनुवाद करें. कोड पाने के लिए, GitHub से रिपॉज़िटरी का क्लोन बनाएं:
git clone https://github.com/google-business-communications/bm-nodejs-translation-tutorial
क्लोन की गई डायरेक्ट्री पर जाएं और अपनी सेवा खाते की कुंजी को रिसॉर्स डायरेक्ट्री में रखें:
cp credentials.json bm-nodejs-translation-sample/resources/bm-agent-service-account-credentials.json
सलाह: अगर आपको अपनी सेवा कुंजी सेट अप या डाउनलोड करने में मदद चाहिए, तो सेवा खातों को मैनेज करने के लिए Google Cloud की गाइड.
इसके बाद, कोड को डिप्लॉय किया जा सकता है:
gcloud app deploy
अपने मोबाइल डिवाइस से एजेंट को कुछ मैसेज भेजें. अपने देख सकते हैं और देखें कि क्या होता है.
Translate API सेट अप करना
सैंपल कोड, पहले से ही Translate API के लिए नोड पैकेज के साथ आता है इंस्टॉल किया गया. अगर आपकी दिलचस्पी नोड पैकेज को इंस्टॉल करने या Translate API को किसी अन्य प्रोग्रामिंग भाषा में इंस्टॉल करने, Cloud Translate API के दस्तावेज़.
Translate API का इस्तेमाल करने के लिए, आपको लाइब्रेरी इंपोर्ट करनी होगी और Translate बनाना होगा
एपीआई क्लाइंट. routes/index.js
फ़ाइल खोलें. काम की लाइनें:
// Import the Translate API library.
const { Translate } = require("@google-cloud/translate").v2;
// Create a new Translate API client.
const translate = new Translate();
अब से, Translate ऑब्जेक्ट पर Translate API के तरीके ऐक्सेस किए जा सकते हैं.
फ़ाइल के सबसे ऊपरी हिस्से के पास बनाए गए वैरिएबल पर एक नज़र डालें:
const SERVER_LANGUAGE = "en";
let currentLanguage = SERVER_LANGUAGE;
सैंपल कोड, सर्वर की भाषा को कॉन्सटेंट के तौर पर सेव करता है, क्योंकि यह
तय किया है. हालांकि, बातचीत की मौजूदा भाषा बदल सकती है. इसलिए, इसे ट्रैक किया जाता है
currentLanguage
वैरिएबल में.
इनकमिंग भाषा का पता लगाना
सैंपल कोड यह पता लगाता है कि आने वाली भाषा बदली गई है या नहीं. अगर ऐसा है, तो उपयोगकर्ता से बातचीत में इस्तेमाल की जाने वाली भाषा चुनने के लिए कहा जाएगा. अपने मोबाइल डिवाइस पर इस सुविधा को आज़माने के लिए, अंग्रेज़ी के अलावा अन्य भाषाएँ. अगर आपको कोई दूसरी भाषा नहीं आती, तो टाइप करके देखें "होला" (यह "नमस्ते" को स्पैनिश में कहते हैं!).
एजेंट, उपयोगकर्ता से सवाल पूछता है और जवाब देता है कि क्या उसे स्विच करना है भाषाएं. प्रॉम्प्ट में सुझाए गए जवाब शामिल होते हैं, जिन पर क्लिक करके उपयोगकर्ता जवाब दे सकता है उस भाषा पर स्विच करें.
चलिए, सबसे पहले भाषा की पहचान करने की सुविधा के बारे में जानते हैं.
/**
* Detects input text language.
*
* @param {string} text The text received from the consumer.
* @param {Context} context The user message request context.
* @return A Promise with the detected language code.
*/
async function detectLanguage(text, context) {
return new Promise(function (resolve, reject) {
translate
.detect(text)
.then((result) => {
if (result && result.length > 0) {
if (result[0].confidence > CONFIDENCE_THRESHOLD) {
resolve(result[0].language);
}
resolve(bcp47.parse(context.resolvedLocale).language);
} else {
reject("No language detected");
}
})
.catch((err) => {
console.error("ERROR:", err);
reject(err);
});
});
}
यह तरीका, पहचान करने के तरीके का इस्तेमाल करता है पर जाएं. क्योंकि Translate API कई भाषाओं का पता लगा सकता है में अलग-अलग लेवल हो सकते हैं (और इसलिए भी कि यह कई इनपुट) का इस्तेमाल करने से, यह तरीका नतीजों की श्रेणी दिखाता है. पहला सैंपल नतीजा मिलता है, जो सबसे ज़्यादा भरोसेमंद नतीजा होता है.
हल की गई स्थान-भाषा का इस्तेमाल किया जा रहा है
कभी-कभी Translate API यह पता नहीं लगा सकता कि मैसेज की भाषा
भरोसा. उदाहरण के लिए, अगर आपकी बिल्ली आपके कीबोर्ड पर दौड़ती है और
एक अर्थहीन स्ट्रिंग है, तो Translate API अब भी भाषा का पता लगाने का प्रयास करता है, लेकिन
पता लगाई गई भाषा संभवतः गलत है. (आखिरकार, Google Translate
यह सुविधा बिल्लियों के लिए भाषा की सुविधा नहीं देती – अभी तक!) Translate API इसे
translate.detect
के नतीजे में, कम कॉन्फ़िडेंस वैल्यू सेट करना.
इस स्थिति में, सैंपल कोड, Business Messages की समस्याएं हल की गई स्थान-भाषा, कौनसा विकल्प, Business Messages API का सबसे सही अनुमान है. मैसेज के कॉन्टेक्स्ट के बारे में बताएं. क्योंकि समाधान किया गया स्थान BCP-47 फ़ॉर्मैट में है, इसलिए आप इसका इस्तेमाल कर सकते हैं संबंधित Node.js पैकेज को स्थान-भाषा से भाषा कोड को पार्स करने में मदद मिलती है.
एजेंट के लिए बेमतलब के शब्दों की एक लंबी स्ट्रिंग लिखकर इस व्यवहार की जांच की जा सकती है. तय सीमा में ज़्यादातर मामलों में, आपको भाषा बदलने का प्रॉम्प्ट नहीं दिखना चाहिए (जब तक कि रिज़ॉल्व की गई स्थान-भाषा, मौजूदा भाषा से अलग है. एजेंट सिर्फ़ इतना कहता है कि यह आपका अनुरोध नहीं समझता.
भाषा बदलने की सूचना
भाषा बदल जाने का पता चलने पर, एजेंट उसे एक प्रॉम्प्ट भेजता है भाषा बदलो.
if (detectedLanguage != currentLanguage) {
translateText(
"Which language would you like to use?",
SERVER_LANGUAGE,
currentLanguage
).then((normalizedTranslationNotice) => {
sendResponse(
normalizedTranslationNotice,
conversationId,
[
...new Set([detectedLanguage, currentLanguage, SERVER_LANGUAGE]),
].map((x) => createSuggestedReply(x))
);
});
}
कोड से प्रॉम्प्ट बनता है और उसका अनुवाद मौजूदा भाषा में होता है. इस बारे में ज़्यादा जानकारी यहां मिलेगी आउटबाउंड संदेश अनुवाद अनुभाग में), फिर इसके साथ एक प्रतिक्रिया भेजता है सुझाए गए जवाब हो सकता है कि उपयोगकर्ता इनमें से किसी में बात करना चाहे भाषाएं:
- पहचानी गई इनकमिंग भाषा.
- बातचीत की मौजूदा भाषा.
- सर्वर में पहले से मौजूद भाषा.
चूंकि इन तीन भाषाओं में ओवरलैप हो सकता है (उदाहरण के लिए, यदि वर्तमान भाषा पहले से ही सर्वर भाषा है), तो सर्वर हटाने के लिए सेट ऑब्जेक्ट का उपयोग करता है डुप्लीकेट के तौर पर मौजूद हैं. इसके बाद, यह हर भाषा के लिए सुझाया गया जवाब बनाता है:
/**
* Create a suggested reply for a language code.
* @param {string} languageCode A ISO 6391 language code.
* @return {Suggestion} The suggestion object for switching to the language.
*/
function createSuggestedReply(languageCode) {
return {
reply: {
text: ISO6391.getNativeName(languageCode),
postbackData: SWITCH_LANGUAGE_POSTBACK + languageCode,
},
};
}
सुझाया गया जवाब, भाषा का नाम उसकी भाषा में दिखाता है. उदाहरण के लिए, स्पैनिश में "Español" लिखा हुआ है. किसी भाषा के बारे में अगर आपको दो अंकों वाला भाषा कोड चाहिए, तो Node.js के लिए ISO-639-1 लाइब्रेरी का इस्तेमाल किया जा सकता है.
पोस्टबैक डेटा पर ध्यान दें, जो किसी उपयोगकर्ता के क्लिक करने पर सर्वर को भेज दिया जाता है यह सुझाव. पोस्टबैक डेटा, सर्वर को रिस्पॉन्स देने का तरीका बताता है. साथ ही, संदर्भ भी शामिल करें.
sendResponse
तरीके में इन्हें अटैच किया गया है
सुझाव देने के लिए इस्तेमाल होने वाले ऑब्जेक्ट
इस जवाब को भेजें:
let messageObject = {
…
suggestions: suggestedReplies,
};
बातचीत की भाषा बदलना
अब अपने मोबाइल डिवाइस पर वापस जाएं और प्रॉम्प्ट. उदाहरण के लिए, यदि आपने "Hola" लिखा है, "Español" पर क्लिक करके देखें इंच सुझाए गए जवाब.
एजेंट, नई भाषा में जवाब देता है. आउटगोइंग मैसेज का अनुवाद करने का तरीका हम बताएंगे जवाब के तौर पर शामिल हैं. फ़िलहाल, वह कोड देखें जो मिलता है और जिसे प्रोसेस करता है सुझाए गए जवाब पर क्लिक किया.
if (requestBody.suggestionResponse !== undefined) {
let postbackData = requestBody.suggestionResponse.postbackData;
if (postbackData.startsWith(SWITCH_LANGUAGE_POSTBACK)) {
let languageCode = postbackData.substr(SWITCH_LANGUAGE_POSTBACK.length);
currentLanguage = languageCode;
translateText(
"The language was set to " +
ISO6391.getName(languageCode) +
". Please repeat your request.",
SERVER_LANGUAGE,
languageCode
).then((translationNotice) => {
sendResponse(translationNotice, conversationId, []);
});
}
}
अगर अनुरोध में किसी सुझाव का जवाब शामिल है, तो सर्वर पोस्टबैक का इस्तेमाल करता है डेटा सेट अप करके तय करें कि क्या करना है. इस मामले में, सर्वर सिर्फ़ एक पोस्टबैक डेटा का प्रकार, SWITCH_LANGUAGE_POSTBACK, जो दर्शाता है कि बातचीत की भाषा, उसकी मौजूदा भाषा में बदल जानी चाहिए कोड. इस भाषा कोड को पार्स करने के बाद, सर्वर भाषा बदल गई है.
इनबाउंड मैसेज का अनुवाद
भाषा बदल जाने के बाद, उस भाषा में एजेंट को अनुरोध भेजा जा सकता है आपके मोबाइल डिवाइस की भाषा में मौजूद है. "सहायता" के लिए शब्द भेजकर देखें नए में भाषा. अगर आपने भाषा को स्पैनिश में बदल दिया है, तो "ayuda" लिखें और Google को दिखाई देगा.
सर्वर, सहायता के आपके अनुरोध और इसके मेन्यू के साथ जवाब को समझता है के विकल्प. हार्ड कोड किए गए जवाब का सैंपल देखने के लिए, इनमें से कोई भी तरीका आज़माएं.
सैंपल कोड, आने वाले (इनकमिंग) और दोनों भाषाओं का अनुवाद करने के लिए, translateText
तरीके का इस्तेमाल करता है
आउटगोइंग मैसेज. इसे अभी देखें:
/**
* Translates text to a given target language. No translation if source and
* target language match.
*
* @param {string} text the text to translate
* @param {string} sourceLanguage The language of the source text.
* @param {string} targetLanguage The target language.
* @return A Promise with the translated text.
*/
async function translateText(text, sourceLanguage, targetLanguage) {
if (sourceLanguage === targetLanguage) {
return new Promise(function (resolve, reject) {
resolve(text);
});
}
return new Promise(function (resolve, reject) {
translate
.translate(text, targetLanguage)
.then((result) => {
if (result && result.length > 0) {
resolve(result[0]);
} else {
reject("Could not translate message");
}
})
.catch((err) => {
console.error("ERROR:", err);
reject(err);
});
});
}
अगर सोर्स भाषा और टारगेट की गई भाषा एक ही है, तो करते हैं. अगर ऐसा नहीं होता है, तो सर्वर अनुवाद का तरीका का इस्तेमाल कर सकते हैं. पता लगाने की विधि की तरह, अनुवाद विधि यह कर सकती है कई इनपुट लें. सर्वर सिर्फ़ एक इनपुट देता है. इसलिए, यह Translate API से पहला नतीजा मिला.
कॉलबैक तरीके का वह सेक्शन देखें जो आने वाले मैसेज का जवाब देता है मौजूदा भाषा:
translateText(incomingMessage, currentLanguage, SERVER_LANGUAGE).then(
(normalizedMessage) => {
let serverResponse = chooseResponseMessage(normalizedMessage);
…
}
);
जवाब देने वाला मैसेज चुनने के लिए, सर्वर translateText
से मिले आउटपुट का इस्तेमाल करता है.
अगले सेक्शन में, जवाब देने के लिए मैसेज चुनने का तरीका और
उसका अनुवाद कर रहा है.
आउटबाउंड मैसेज का अनुवाद
जब सर्वर आपके आने वाले मैसेज का अनुवाद अपनी मूल अंग्रेज़ी में कर लेता है, तो उसके पास
उपयोगकर्ता के अनुरोध को चुनने, उसका अनुवाद करने, और उसके जवाब में सही जवाब भेजने के लिए.
यह सैंपल कोड, एक बहुत ही आसान स्कीम का इस्तेमाल करता है. इसमें कीवर्ड को जवाबों से मैप किया जाता है. है
chooseResponseMessage
तरीके पर एक नज़र डालें.
/**
* Select a topically appropriate response based on the message
* content that the user sent to the agent.
*
* @param {string} incomingMessage The content of the message that the user typed in.
* @param {string} conversationId The unique id for this user and agent.
* @return {string} A response message.
*/
function chooseResponseMessage(incomingMessage) {
let responseMapping = {
balance: "Your current balance is $500.",
deposit: "Please enter your deposit amount.",
transfer:
"Please enter the account number where you wish to transfer the funds.",
withdraw: "Please enter the amount you wish to withdraw.",
help: "Please choose what you'd like to do: balance, deposit, transfer, or withdraw.",
};
for (const [key, value] of Object.entries(responseMapping)) {
if (incomingMessage.toLowerCase().includes(key)) {
return value;
}
}
return "I didn't understand your request. Please try again.";
}
यह स्कीम सर्वर पर सिर्फ़ अंग्रेज़ी में काम करती है. इसका मतलब है कि सर्वर को सभी इनबाउंड और आउटबाउंड मैसेज का अनुवाद करें. हालांकि, ज़्यादा बेहतर सिस्टम की सुविधा कई भाषाओं में उपलब्ध होनी चाहिए. साथ ही, दूसरी भाषाओं में मिले अनुरोधों का जवाब स्थानीय तौर पर दिया जा सकता है. उदाहरण के लिए, अगर आपका एजेंट स्पैनिश में काम करता है, तो उसके पास पहले से "युगा" जवाब मैप में जोड़ दिया जाएगा. ज़्यादा जटिल सिस्टम सही जवाब चुनने के तरीके, जैसे कि मशीन लर्निंग या स्कोरिंग एल्गोरिदम पर काम करता है. Business Messages की मदद से, बेहतर जवाब देने का एक तरीका को Dialogflow के साथ इंटिग्रेट करना है.
अब वह कोड देखें जो चुने गए मैसेज को उपयोगकर्ता को वापस भेजता है.
let serverResponse = chooseResponseMessage(normalizedMessage);
translateText(
serverResponse,
SERVER_LANGUAGE,
currentLanguage
).then((normalizedResponse) => {
sendResponse(normalizedResponse, conversationId, []);
});
सैंपल कोड, चुने गए टेक्स्ट का अनुवाद करने के लिए, translateText
तरीके का इस्तेमाल करता है
बातचीत की मौजूदा भाषा में जवाब दे सकते हैं. इसके बाद, sendResponse
तरीका
नया मैसेज ऑब्जेक्ट बनाने और उसे उपयोगकर्ता को भेजने का ध्यान रखा जाता है.
खास जानकारी
इस ट्यूटोरियल में आपने सीखा Cloud Translate API के साथ आसान इंटिग्रेशन साथ ही, ज़्यादा उपयोगकर्ताओं तक पहुंचने के लिए Business Messages की स्थानीय सुविधाओं का इस्तेमाल करें. अगर आपको जैसे, इस ट्यूटोरियल में दिए गए सैंपल कोड का इस्तेमाल करके, अपने एकीकरण नहीं है या आप कुछ नया आज़माकर देख सकते हैं! यहां कुछ आइडिया दिए गए हैं:
- दो भाषाओं में मैसेज भेजें, जिनमें ओरिजनल मैसेज का कॉन्टेंट और का अपने-आप अनुवाद किया गया है.
- जब उपयोगकर्ता बातचीत.
- Translate API की बेहतर सुविधाओं का इस्तेमाल करना जैसे कि शब्दावली.
Translate API के साथ इंटिग्रेट करके, आपको अच्छी क्वालिटी की मशीन का फ़ायदा मिल सकता है का इस्तेमाल किया जा सकता है. इससे एजेंट की बातचीत बेहतर तरीके से और बेहतर तरीके से की जा सकती है. ग्राहक की संतुष्टि और टास्क पूरा करना.