उपयोगकर्ता की पहचान की पुष्टि करने के दूसरे तरीके (एसयूवी) की मदद से, बोले गए निर्देशों के लिए सुरक्षा का दूसरा चरण जोड़ा जा सकता है. इससे आपको कुछ कार्रवाइयों के लिए अतिरिक्त सुरक्षा जोड़ने की सुविधा मिलती है. जैसे, सुरक्षा कैमरे को बंद करना या दरवाज़ा खोलना. उपयोगकर्ता की पहचान की पुष्टि करने का दूसरा तरीका, डिवाइस की किसी खास सुविधा से नहीं जुड़ा होता. इससे आपको यह तय करने की सुविधा मिलती है कि Google Assistant को कब चुनौती जारी करनी है. उदाहरण के लिए, सुरक्षा कैमरे के लिए OnOff trait को चुनौती देने का विकल्प चुना जा सकता है. हालांकि, लाइट के लिए OnOff trait को चुनौती नहीं दी जा सकती. कुछ मामलों में, एक ही कार्रवाई के लिए Assistant चुनौतियां भी जारी की जा सकती हैं. उदाहरण के लिए, यह अनुरोध किया जा सकता है कि अगर एनएफ़सी कीफ़ॉब उस दरवाज़े के पास नहीं है, तो Assistant दरवाज़ा खोलने के लिए चैलेंज का अनुरोध जारी करे. हालांकि, अगर कीफ़ॉब मौजूद है, तो चैलेंज जारी न करे.
Assistant दो तरह के चैलेंज जारी कर सकता है -
साफ़ तौर पर सहमति देना या व्यक्तिगत पहचान संख्या (पिन). इससे Assistant से आपकी कार्रवाई को वापस भेजे गए QUERY और EXECUTE इंटेंट में चैलेंज ब्लॉक जुड़ जाता है. साथ ही, challengeNeeded गड़बड़ी का जवाब स्वीकार किया जाता है. इसके बाद, Assistant आपके ऐक्शन को इंटेंट का अनुरोध वापस भेजता है. इसमें चैलेंज ब्लॉक में चैलेंज का डेटा शामिल होता है. इसके बाद, चैलेंज डेटा की पुष्टि करके यह पता लगाया जा सकता है कि उपयोगकर्ता ने सुरक्षा से जुड़े सवाल का सही जवाब दिया है या नहीं.
Assistant, चैलेंज जारी करने के लिए डायलॉग का इस्तेमाल करता है. हालाँकि, अगर Assistant का इस्तेमाल बोलकर नहीं किया जाता है, तो पिन और पुष्टि करने की प्रक्रिया स्क्रीन पर पूरी की जाती है.
उपयोगकर्ता की पहचान की पुष्टि करने के दूसरे तरीके का इस्तेमाल कब करना चाहिए
उपयोगकर्ता की पहचान की पुष्टि करने के दूसरे तरीके को किसी भी तरह के डिवाइस या विशेषता के लिए चालू किया जा सकता है. हालांकि, आपको सुरक्षा के लिहाज़ से संवेदनशील कुछ डिवाइस टाइप और सुविधाओं के लिए, उपयोगकर्ता की पहचान की पुष्टि करने का दूसरा तरीका लागू करना होगा. इससे आपके इंटिग्रेशन को सर्टिफ़िकेट मिल पाएगा.
यहां दी गई विशेषताओं और डिवाइस टाइप के कॉम्बिनेशन के लिए, pinNeeded चैलेंज टाइप का इस्तेमाल करके, उपयोगकर्ता की पहचान की पुष्टि करने का दूसरा तरीका ज़रूरी है:
- अगर डिवाइस टाइप
CAMERAहै, तोOnOfftrait. - अगर डिवाइस का टाइप
DOOR,GARAGE,GATEयाWINDOWहै, तोOpenClosetrait. - अनलॉक करते समय
LockUnlockकी सुविधा. - सुरक्षा सिस्टम को बंद करने या बंद करने की कार्रवाई को रद्द करने के लिए,
ArmDisarmट्रेट. - अगर डिवाइस का टाइप
NETWORKयाROUTERहै, तोReboot,SoftwareUpdateयाNetworkControlट्रेट.
अगर डिवाइस का टाइप AC_UNIT है और इंटिग्रेशन की जगह जापान है, तो TemperatureSetting विशेषता के लिए ackNeeded चैलेंज टाइप ज़रूरी है.
इस्तेमाल किए जा सकने वाले चैलेंज के टाइप
उपयोगकर्ता की पहचान की पुष्टि करने के दूसरे तरीके के तौर पर, ये चैलेंज इस्तेमाल किए जा सकते हैं:
- कोई चैलेंज नहीं - ऐसा अनुरोध और जवाब जिसमें उपयोगकर्ता की पहचान की पुष्टि करने के दूसरे तरीके का इस्तेमाल नहीं किया जाता.
- ackNeeded - उपयोगकर्ता की पहचान की पुष्टि करने का दूसरा तरीका. इसके लिए, साफ़ तौर पर सहमति (हां या नहीं) की ज़रूरत होती है. साथ ही, जवाब के तौर पर मिलने वाले सुझाव/राय/शिकायत के लिए, trait states का भी इस्तेमाल किया जा सकता है. सुरक्षा से जुड़े डिवाइसों और विशेषताओं के लिए, इस तरह के चैलेंज का सुझाव नहीं दिया जाता.
- pinNeeded - उपयोगकर्ता की पहचान की पुष्टि करने का दूसरा तरीका, जिसके लिए व्यक्तिगत पहचान संख्या (पिन) की ज़रूरत होती है. यह सुरक्षा डिवाइसों और विशेषताओं के लिए सबसे सही है.
कोई चुनौती नहीं
इस उदाहरण में, लाइट चालू करने के लिए, बिना किसी चैलेंज के EXECUTE का अनुरोध और जवाब दिखाया गया है.
| उपयोगकर्ता | लाइटें चालू करो. |
| Google Assistant | ठीक है, तीन लाइटें चालू कर रही हूँ. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.OnOff", "params": { "on": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS", "states": { "on": true, "online": true } }] } }
ackNeeded
उपयोगकर्ता की पहचान की पुष्टि करने का दूसरा तरीका, जिसमें किसी विशेषता के लिए कई स्थितियों का इस्तेमाल किया जा सकता है या पहचान की पुष्टि करने का आसान तरीका इस्तेमाल किया जा सकता है.
ackNeeded चैलेंज के ये टाइप होते हैं:
ackNeeded simple
इस उदाहरण में, लाइट को धीमा करने के लिए ackNeeded चैलेंज के साथ एक आसान अनुरोध और जवाब दिखाया गया है. साथ ही, लाइट को धीमा करने की पुष्टि भी दिखाई गई है.
| उपयोगकर्ता | लिविंग रूम की लाइट की रोशनी कम करो. |
| Google Assistant | लिविंग रूम की लाइट की रोशनी कम कर रही हूँ. क्या आप वाकई ऐसा करना चाहते हैं? |
| उपयोगकर्ता | हां. |
| Google Assistant | लिविंग रूम की लाइट की रोशनी कम कर रही हूँ. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.BrightnessAbsolute", "params": { "brightness": 12 } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.BrightnessAbsolute", "params": { "brightness": 12 }, "challenge": { "ack": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS" }] } }
trait states के साथ ackNeeded
सेकंडरी उपयोगकर्ता की पुष्टि करने की सुविधा, जो किसी विशेषता के लिए स्थितियों का इस्तेमाल कर सकती है.
उदाहरण के लिए, अगर TemperatureSetting ट्रेट का इस्तेमाल किया जा रहा है और thermostatMode और thermostatTemperatureSetpoint, दोनों सेट हैं, तो Assistant यह पूछ सकता है कि क्या आपको वाकई एयर कंडिशनर का तापमान 28 डिग्री पर सेट करना है?
जवाब में कोई स्टेट भी शामिल किया जा सकता है, ताकि Assistant किसी अनुरोध के आधार पर कोई कार्रवाई कर सके.
यहां दी गई विशेषताएं और स्थितियां, विशेषता की स्थितियों के साथ ackNeeded के साथ काम करती हैं. किसी खास विशेषता की लिस्टिंग से पता चलता है कि उसकी सभी स्थितियां काम करती हैं.
- ArmDisarm
- डिवाइस को चालू या बंद करने के लिए,
ackNeededचैलेंज टाइप का इस्तेमाल करें. हालांकि, डिवाइस को बंद करने और बंद करने की प्रोसेस को रद्द करने के लिए,pinNeededचैलेंज टाइप का इस्तेमाल करना ज़रूरी है. - Fill
- LockUnlock
- डिवाइस को लॉक करने के लिए,
ackNeededचैलेंज टाइप का इस्तेमाल करें. साथ ही, अनलॉक करने के लिए,pinNeededचैलेंज टाइप का इस्तेमाल करें. - OnOff
on- इस विशेषता के लिए,
ackNeededचैलेंज टाइप का इस्तेमाल करें.CAMERAडिवाइसों के साथ इस trait का इस्तेमाल करने पर,pinNeededचैलेंज टाइप की ज़रूरत होती है. - OpenClose
- इस विशेषता के लिए,
ackNeededचैलेंज टाइप का इस्तेमाल करें. जब इस ट्रेट का इस्तेमालDOOR,GARAGE,GATEयाWINDOWडिवाइसों के साथ किया जाता है, तोpinNeededचैलेंज टाइप ज़रूरी होता है. - Scene
- TemperatureSetting
thermostatModethermostatTemperatureSetpointthermostatTemperatureSetpointHighthermostatTemperatureSetpointLow
इस उदाहरण में, ackNeeded चैलेंज के साथ किया गया अनुरोध और उसका जवाब दिखाया गया है. इसमें ट्रेट स्टेट का इस्तेमाल किया गया है. इससे एयर कंडिशनर का मोड बदलकर हीट हो जाता है और तापमान 28 डिग्री पर सेट हो जाता है. इसके बाद, Assistant उपयोगकर्ताओं से हीटिंग सिस्टम चालू करने और तापमान को 28 डिग्री पर सेट करने की अनुमति मांगता है. ऐसा इसलिए, क्योंकि जवाब में 28 का thermostatTemperatureSetpoint, स्थिति के तौर पर दिखाया जाता है.
| उपयोगकर्ता | एसी को हीट मोड पर सेट करो. |
| Google Assistant | क्या आपको वाकई एयर कंडिशनर को 28 डिग्री पर सेट करना है? |
| उपयोगकर्ता | हां. |
| Google Assistant | एयर कंडीशनर पर तापमान को 28 डिग्री पर सेट किया जा रहा है. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.TemperatureSetting", "params": { "thermostatMode": "heat" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "states": { "thermostatMode": "heat", "thermostatTemperatureSetpoint": 28 }, "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.TemperatureSetting", "params": { "thermostatMode": "heat" }, "challenge": { "ack": true } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS", "states": { "thermostatMode": "heat", "thermostatTemperatureSetpoint": 28 } }] } }
pinNeeded
सुरक्षा डिवाइसों के लिए, pinNeeded चैलेंज का सुझाव दिया जाता है.
इस उदाहरण में, pinNeeded चैलेंज के साथ शुरुआती अनुरोध और जवाब दिखाया गया है. इस उदाहरण में, pinNeeded चैलेंज के साथ जवाब मिलता है. इसलिए, Assistant पिन मांगता है. इस समय, उपयोगकर्ता
गलत या सही पिन दे सकता है.
गलत या मान्य पिन के लिए, अनुरोध और जवाब का सैंपल:
| उपयोगकर्ता | दरवाज़ा अनलॉक करें. |
| Google Assistant | क्या मुझे आपके कार्ड का सुरक्षा कोड मिल सकता है? |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.LockUnlock", "params": { "lock": false } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "pinNeeded" } }] } }
गलत पिन
इस उदाहरण में, challengeFailedPinNeeded चैलेंज के साथ अनुरोध और जवाब दिखाया गया है. इस चैलेंज का इस्तेमाल, शुरुआती pinNeeded चैलेंज के फ़ेल होने के बाद किया जाना चाहिए.
challengeFailedPinNeeded टाइप की गड़बड़ी होने पर,
Assistant सुरक्षा कोड फिर से मांगता है. अगर उपयोगकर्ता कई बार कोशिश करने के बाद भी सही जवाब नहीं दे पाता है, तो tooManyFailedAttempts गड़बड़ी का मैसेज दिखाया जा सकता है. गड़बड़ी के जवाब देखें.
| उपयोगकर्ता | 333222 |
| Google Assistant | माफ़ करें, सुरक्षा कोड गलत है. क्या मुझे आपके कार्ड का सुरक्षा कोड मिल सकता है? |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.LockUnlock", "params": { "lock": false }, "challenge": { "pin": "333222" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "challengeFailedPinNeeded" } }] } }
मान्य पिन
इस उदाहरण में, मान्य पिन के अनुरोध और जवाब को दिखाया गया है.
| उपयोगकर्ता | 333444 |
| Google Assistant | दरवाज़े को अनलॉक किया जा रहा है. |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.LockUnlock", "params": { "lock": false }, "challenge": { "pin": "333444" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "SUCCESS", "states": { "isLocked": false, "isJammed": false } }] } }
| उपयोगकर्ता | लिविंग रूम की लाइट की रोशनी कम करो. |
| Google Assistant | क्या मुझे आपके कार्ड का सुरक्षा कोड मिल सकता है? |
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123" }], "execution": [{ "command": "action.devices.commands.BrightnessAbsolute", "params": { "brightness": 12 } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "pinNeeded" } }] } }
गड़बड़ी के रिस्पॉन्स
यहां गड़बड़ी के कुछ ऐसे कोड दिए गए हैं जो आपके जवाबों के साथ दिखाए जा सकते हैं:
- tooManyFailedAttempts - माफ़ करें, कई बार कोशिश की जा चुकी है. कृपया उस कार्रवाई को पूरा करने के लिए, अपने डिवाइस के ऐप्लिकेशन पर जाएँ.
- pinIncorrect - माफ़ करें, सुरक्षा कोड गलत है.
- userCancelled - Ok
गड़बड़ियों और अपवादों की पूरी सूची देखें.