Package google.assistant.embedded.v1alpha1

इंडेक्स

EmbeddedAssistant

ऐसी सेवा जो Google Assistant API को लागू करती है.

Converse

rpc Converse(ConverseRequest) returns (ConverseResponse)

एम्बेड की गई Assistant सेवा से बातचीत शुरू करता है या उसे जारी रखता है. हर कॉल एक दोतरफ़ा यात्रा करता है, जिसमें सेवा को ऑडियो अनुरोध भेजा जाता है और ऑडियो जवाब मिलता है. नतीजे पाने के लिए, ऑडियो भेजने के दौरान END_OF_UTTERANCE इवेंट जैसे नतीजे पाने के लिए, दो तरीकों से स्ट्रीम करने की सुविधा का इस्तेमाल किया जाता है.

बातचीत एक या इससे ज़्यादा gRPC कनेक्शन होते हैं. हर कनेक्शन में, स्ट्रीम किए गए कई अनुरोध और जवाब शामिल होते हैं. उदाहरण के लिए, उपयोगकर्ता मेरी ख़रीदारी की सूची में जोड़ो कहता है और Assistant जवाब देती है कि आप क्या जोड़ना चाहते हैं?. पहले gRPC मैसेज में, स्ट्रीम किए गए अनुरोधों और जवाबों का क्रम यह हो सकता है:

  • ConverseRequest.config
  • ConverseRequest.audio_in
  • ConverseRequest.audio_in
  • ConverseRequest.audio_in
  • ConverseRequest.audio_in
  • ConverseResponse.event_type.END_OF_UTTERANCE
  • ConverseResponse.result.microphone_mode.DIALOG_FOLLOW_ON
  • ConverseResponse.audio_out
  • ConverseResponse.audio_out
  • ConverseResponse.audio_out

इसके बाद, उपयोगकर्ता बैगल कहता है और Assistant जवाब देती है, ठीक है, मैंने आपकी ख़रीदारी की सूची में बैगल जोड़ दिए हैं. इसे स्ट्रीम किए गए अनुरोधों और जवाबों के साथ, फिर से Converse तरीके को एक और gRPC कनेक्शन कॉल के तौर पर भेजा जाता है. जैसे:

  • ConverseRequest.config
  • ConverseRequest.audio_in
  • ConverseRequest.audio_in
  • ConverseRequest.audio_in
  • ConverseResponse.event_type.END_OF_UTTERANCE
  • ConverseResponse.result.microphone_mode.CLOSE_MICROPHONE
  • ConverseResponse.audio_out
  • ConverseResponse.audio_out
  • ConverseResponse.audio_out
  • ConverseResponse.audio_out

हालांकि, जवाबों के सटीक क्रम की कोई गारंटी नहीं है, लेकिन क्रम में दिए गए ConverseResponse.audio_out मैसेज में हमेशा ऑडियो के क्रम वाले हिस्से शामिल होंगे.

अनुमति देना

नीचे दिए गए OAuth के लिंक की ज़रूरत हाेती है:

  • https://www.googleapis.com/auth/assistant-sdk-prototype

ज़्यादा जानकारी के लिए, पुष्टि करने से जुड़ी गाइड देखें.

AudioInConfig

इस नीति से, audio_in के उस डेटा को प्रोसेस करने का तरीका बताया जाता है जो बाद के अनुरोधों में दिया जाएगा. सुझाई गई सेटिंग के लिए, Google Assistant gRPC API से जुड़े सबसे सही तरीके देखें.

फ़ील्ड
encoding

Encoding

सभी audio_in मैसेज में भेजे गए ऑडियो डेटा को कोड में बदलने का तरीका ज़रूरी है.

sample_rate_hertz

int32

सभी audio_in मैसेज में भेजे गए ऑडियो डेटा का सैंपल रेट (हर्ट्ज़ में) ज़रूरी है. मान्य वैल्यू 16,000 से 24,000 के बीच होती है. हालांकि, 16,000 वैल्यू सबसे सही होती है. सबसे अच्छे नतीजे पाने के लिए, ऑडियो सोर्स की सैंपलिंग रेट को 16,000 हर्ट्ज़ पर सेट करें. अगर यह संभव नहीं है, तो फिर से सैंपल करने के बजाय, ऑडियो सोर्स के स्थानीय सैंपल रेट का इस्तेमाल करें.

एन्कोडिंग

ऑडियो मैसेज में भेजे गए डेटा की ऑडियो एन्कोडिंग. ऑडियो एक-चैनल (मोनो) का होना चाहिए. फ़िलहाल, "en-US" भाषा का इस्तेमाल किया जा सकता है.

Enums
ENCODING_UNSPECIFIED जानकारी नहीं दी गई. google.rpc.Code.INVALID_ARGUMENT नतीजा दिखाएगा.
LINEAR16 बिना कंप्रेस किए 16-बिट साइन किए हुए लिटिल-एंडियन सैंपल (लीनियर PCM). इस एन्कोडिंग में कोई हेडर नहीं होता, सिर्फ़ रॉ ऑडियो बाइट शामिल होती हैं.
FLAC FLAC (मुफ़्त लॉसलेस ऑडियो कोडेक) एन्कोडिंग का सुझाव दिया जाता है, क्योंकि इससे कोई नुकसान नहीं होता--इसलिए, पहचान से छेड़छाड़ नहीं की जाती--और इसमें LINEAR16 की करीब आधी बैंडविथ होनी चाहिए. इस एन्कोडिंग में FLAC स्ट्रीम हेडर के बाद ऑडियो डेटा शामिल होता है. यह 16-बिट और 24-बिट वाले सैंपल के साथ काम करता है. हालांकि, STREAMINFO के सभी फ़ील्ड काम नहीं करते.

AudioOut

वह ऑडियो जिसमें क्वेरी के लिए Assistant का जवाब मौजूद है. ऑडियो डेटा के कई हिस्से, क्रम में चलने वाले ConverseResponse मैसेज में मिलते हैं.

फ़ील्ड
audio_data

bytes

आउटपुट-ओनली ऑडियो डेटा, जिसमें क्वेरी के लिए Assistant का जवाब शामिल होता है. ऑडियो डेटा के कई हिस्से, क्रम में चलने वाले ConverseResponse मैसेज में मिलते हैं.

AudioOutConfig

यह नीति audio_out मैसेज दिखाने के लिए, सर्वर को इस्तेमाल करने के लिए पसंदीदा फ़ॉर्मैट बताती है.

फ़ील्ड
encoding

Encoding

ज़रूरी है सभी audio_out मैसेज में दिखाए जाने वाले ऑडियो डेटा को कोड में बदलने का तरीका.

sample_rate_hertz

int32

ज़रूरी है audio_out मैसेज में लौटाए गए ऑडियो डेटा के हर्ट्ज़ में सैंपल रेट. मान्य वैल्यू हैं: 16,000-24,000.

volume_percentage

int32

ज़रूरी है डिवाइस के ऑडियो आउटपुट की मौजूदा वॉल्यूम सेटिंग. वैल्यू 1 से 100 के बीच की होती हैं, जो 1% से 100% के बीच होती हैं.

एन्कोडिंग

ऑडियो मैसेज में दिखाए गए डेटा की ऑडियो एन्कोडिंग. सभी एन्कोडिंग रॉ ऑडियो बाइट होती हैं, जिनमें कोई हेडर नहीं होता. हालांकि, यहां बताया गया है कि डेटा को कोड में बदलने के लिए कौनसे तरीके इस्तेमाल किए जाते हैं.

Enums
ENCODING_UNSPECIFIED जानकारी नहीं दी गई. google.rpc.Code.INVALID_ARGUMENT नतीजा दिखाएगा.
LINEAR16 बिना कंप्रेस किए 16-बिट साइन किए हुए लिटिल-एंडियन सैंपल (लीनियर PCM).
MP3 MP3 ऑडियो एन्कोडिंग. सैंपल रेट को पेलोड में एन्कोड किया जाता है.
OPUS_IN_OGG ओजीजी कंटेनर में रैप किया गया Opus-एन्कोडेड ऑडियो. इससे एक ऐसी फ़ाइल बनेगी जिसे मूल रूप से Android पर और कुछ ब्राउज़र (जैसे Chrome) में चलाया जा सकता है. समान बिटरेट का इस्तेमाल करने पर, कोड में बदलने के तरीके की क्वालिटी MP3 से काफ़ी बेहतर होती है. सैंपल रेट को पेलोड में एन्कोड किया जाता है.

ConverseConfig

ConverseRequest मैसेज को प्रोसेस करने का तरीका बताता है.

फ़ील्ड
audio_in_config

AudioInConfig

ज़रूरी है: इससे, आने वाले ऑडियो को प्रोसेस करने का तरीका पता चलता है.

audio_out_config

AudioOutConfig

ज़रूरी है: इससे पता चलता है कि किस ऑडियो को फ़ॉर्मैट किया जाएगा.

converse_state

ConverseState

ज़रूरी है यह डायलॉग बॉक्स की मौजूदा स्थिति दिखाता है.

ConverseRequest

क्लाइंट से मिला टॉप लेवल मैसेज. क्लाइंट को कम से कम दो और आम तौर पर कई ConverseRequest मैसेज भेजने होंगे. पहले मैसेज में config मैसेज होना चाहिए और इसमें audio_in डेटा नहीं होना चाहिए. बाद के सभी मैसेज में audio_in डेटा होना चाहिए और config मैसेज नहीं होना चाहिए.

फ़ील्ड
यूनियन फ़ील्ड converse_request. हर ConverseRequest में, इनमें से कोई एक फ़ील्ड दिया जाना चाहिए. converse_request इनमें से सिर्फ़ एक हो सकता है:
config

ConverseConfig

config मैसेज, आइडेंटिफ़ायर को ऐसी जानकारी देता है जिससे अनुरोध को प्रोसेस करने का तरीका तय होता है. पहले ConverseRequest मैसेज में एक config मैसेज होना चाहिए.

audio_in

bytes

पहचाना जाने वाला ऑडियो डेटा. ऑडियो डेटा के कई हिस्से, क्रम में चलने वाले ConverseRequest मैसेज में भेजे जाते हैं. पहले ConverseRequest मैसेज में audio_in डेटा नहीं होना चाहिए और बाद के सभी ConverseRequest मैसेज में audio_in डेटा होना चाहिए. ऑडियो बाइट को AudioInConfig में बताए गए तरीके से एन्कोड किया जाना चाहिए. ऑडियो करीब रीयल-टाइम (हर सेकंड में 16,000 सैंपल) भेजा जाना चाहिए. अगर ऑडियो ज़्यादा तेज़ या धीमी रफ़्तार से भेजा जाता है, तो गड़बड़ी का मैसेज दिखेगा.

ConverseResponse

क्लाइंट को मिला टॉप लेवल मैसेज. एक या उससे ज़्यादा ConverseResponse मैसेज की सीरीज़, क्लाइंट को वापस स्ट्रीम की जाती है.

फ़ील्ड
यूनियन फ़ील्ड converse_response. इनमें से सिर्फ़ एक फ़ील्ड में, हर ConverseResponse में अपने-आप जानकारी भर जाएगी. converse_response इनमें से सिर्फ़ एक हो सकता है:
error

Status

सिर्फ़ आउटपुट के लिए इस नीति को सेट करने पर, google.rpc.Status मैसेज दिखता है. यह मैसेज, कार्रवाई की गड़बड़ी के बारे में बताता है. अगर प्रोसेस करने के दौरान कोई गड़बड़ी होती है, तो इस मैसेज को सेट कर दिया जाएगा. इसके बाद, कोई मैसेज नहीं भेजा जाएगा.

event_type

EventType

आउटपुट-ओनली, इवेंट टाइप के बारे में बताता है.

audio_out

AudioOut

आउटपुट-ओनली वह ऑडियो जिसमें क्वेरी का Assistant का जवाब मौजूद होता है.

result

ConverseResult

आउटपुट-ओनली, उपयोगकर्ता की बोली गई क्वेरी के सिमैंटिक नतीजा.

EventType

यह बताता है कि इवेंट किस तरह का है.

Enums
EVENT_TYPE_UNSPECIFIED कोई इवेंट मौजूद नहीं है.
END_OF_UTTERANCE इस इवेंट से पता चलता है कि सर्वर ने उपयोगकर्ता की बोली की बातचीत के खत्म हो जाने का पता लगा लिया है. इसलिए, सर्वर को कोई और आवाज़ नहीं सुनाई देगी. इसलिए, सर्वर अतिरिक्त ऑडियो को प्रोसेस नहीं करेगा. हालांकि, हो सकता है कि बाद में सर्वर अन्य ऑडियो को भी प्रोसेस करे. क्लाइंट को अतिरिक्त ऑडियो डेटा भेजना बंद कर देना चाहिए, gRPC कनेक्शन को आधा बंद करना चाहिए, और सर्वर के gRPC कनेक्शन को बंद करने तक किसी भी अतिरिक्त नतीजे का इंतज़ार करना चाहिए.

ConverseResult

उपयोगकर्ता की बोली गई क्वेरी के लिए सिमैंटिक नतीजा.

फ़ील्ड
spoken_request_text

string

आउटपुट-ओनली: उपयोगकर्ता की बोली गई ट्रांसक्रिप्ट.

spoken_response_text

string

आउटपुट-ओनली Assistant, बोलकर दिए गए जवाब का टेक्स्ट. इसे सिर्फ़ IFTTT कार्रवाई के लिए लौटाया जाता है.

conversation_state

bytes

बाद के ConverseRequest के लिए, आउटपुट-ओनली स्थिति की जानकारी. इस वैल्यू को क्लाइंट में सेव किया जाना चाहिए और अगले ConverseRequest के साथ conversation_state में दिखाया जाना चाहिए. (क्लाइंट को इस वैल्यू को समझने या किसी दूसरे तरीके से इसका इस्तेमाल करने की ज़रूरत नहीं है.) डिवाइस रीस्टार्ट करने पर, इस जानकारी को सेव करने की कोई ज़रूरत नहीं है.

microphone_mode

MicrophoneMode

आउटपुट-ओनली, इस Converse RPC के प्रोसेस हो जाने के बाद, माइक्रोफ़ोन का मोड तय करता है.

volume_percentage

int32

आउटपुट-ओनली आवाज़ के लेवल को अपडेट किया गया. वैल्यू को 0 या उसमें कोई बदलाव नहीं दिखाया जाएगा. यह तब तक नहीं रहेगा, जब तक "वॉल्यूम बढ़ाएं" या "आवाज़ का लेवल 4 सेट करें" जैसा कोई वॉइस कमांड नहीं मिलता. ऐसे में, वैल्यू 1 से 100 के बीच होगी (जैसे, 1% से 100% के नए वॉल्यूम लेवल पर). आम तौर पर, क्लाइंट को audio_out डेटा चलाते समय इस वॉल्यूम लेवल का इस्तेमाल करना चाहिए और इस वैल्यू को वॉल्यूम के मौजूदा लेवल के रूप में बनाए रखना चाहिए और इसे अगले ConverseRequest के AudioOutConfig में देना चाहिए. (कुछ क्लाइंट, आवाज़ के मौजूदा लेवल को बदलने के लिए दूसरे तरीके भी अपना सकते हैं. उदाहरण के लिए, ऐसा नॉब देकर जिसे उपयोगकर्ता चालू कर सके.)

MicrophoneMode

Converse RPC पूरा होने के बाद माइक्रोफ़ोन की संभावित स्थितियां.

Enums
MICROPHONE_MODE_UNSPECIFIED कोई मोड दर्ज नहीं है.
CLOSE_MICROPHONE इस सेवा को उपयोगकर्ता से फ़ॉलो-ऑन सवाल की उम्मीद नहीं होनी चाहिए. माइक्रोफ़ोन तब तक बंद रहना चाहिए, जब तक उपयोगकर्ता उसे फिर से चालू न कर दे.
DIALOG_FOLLOW_ON इस सेवा को उपयोगकर्ता से फ़ॉलो-ऑन सवाल की उम्मीद होती है. AudioOut प्लेबैक पूरा होने पर माइक्रोफ़ोन फिर से चालू होना चाहिए (नया ऑडियो भेजने के लिए, नया Converse RPC कॉल शुरू करके).

ConverseState

डायलॉग बॉक्स की मौजूदा स्थिति के बारे में जानकारी देता है.

फ़ील्ड
conversation_state

bytes

ज़रूरी है conversation_state वैल्यू, जो पिछले ConverseResponse में दिखाई गई थी. अगर पहले से कोई ConverseResponse न हो, तो छोड़ दें (फ़ील्ड सेट न करें). अगर पहले कोई ConverseResponse मौजूद था, तो इस फ़ील्ड को न छोड़ें; ऐसा करने से वह बातचीत खत्म हो जाएगी (और इस नए अनुरोध से नई बातचीत शुरू हो जाएगी).