import { Permission } from "actions-on-google"; import { InformationService } from '@everisinnovationbot/banc_sabadell_services'; import { InformationDFManager } from '@everisinnovationbot/dialog_flow_managers'; import { SuggestionDFManager } from '../../managers/dialogflow/suggestion.manager' export class InfoIntents { private informationService: InformationService = new InformationService(); public intents(app): void { //OFICINAS app.intent('Oficinas Cercanas', async conv => { conv.data.requestedPermission = conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT') ? 'DEVICE_PRECISE_LOCATION' : 'DEVICE_COARSE_LOCATION'; if (!conv.user.storage.location) { console.log("PaTuGi"); const permissionContext = InformationDFManager.generateInformationContextPermission(); return conv.ask(new Permission({ context: permissionContext, permissions: conv.data.requestedPermission, })); } //BS: '41.489765', '2.080437' // const offices = await this.informationService.getOffices('41.3895416', '2.1350957999999998'); // this.offices(offices, '41.3895416', '2.1350957999999998', conv); // conv.ask(SuggestionDFManager.generateSuggestions()); }); // PERMISOS app.intent('Get Permission', async (conv, params, permissionGranted) => { if (!permissionGranted) { const permissionFailure = InformationDFManager.generateInformationPermissionFailure(); conv.ask(permissionFailure); } console.log("permissionGranted2: ", permissionGranted); if (permissionGranted) { const { requestedPermission } = conv.data; console.log("requestedPermission", requestedPermission); if (requestedPermission === 'DEVICE_COARSE_LOCATION') { //speaker device console.log("ENTRO 10", conv.device.location.city); conv.user.storage.location = conv.device.location.city; } if (requestedPermission === 'DEVICE_PRECISE_LOCATION') { //phone device const { coordinates } = conv.device.location; console.log("coordinates: ", coordinates); const offices = await this.informationService.getOffices(coordinates.latitude, coordinates.longitude); this.offices(offices, coordinates.latitude, coordinates.longitude, conv); } } conv.ask(SuggestionDFManager.generateSuggestions()); }); //ABRIR APP app.intent('Open app', (conv) => { if (conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')) { const openAppSimpleResponseScreen = InformationDFManager.generateOpenAppSimpleResponseScreen(); const openAppBasicCard = InformationDFManager.generateOpenAppBasicCard(); conv.ask(openAppSimpleResponseScreen); conv.ask(openAppBasicCard); } else { const openAppSimpleResponseNoScreen = InformationDFManager.generateOpenAppSimpleResponseNoScreen(); conv.ask(openAppSimpleResponseNoScreen); } conv.ask(SuggestionDFManager.generateSuggestions()); }); //CONTACTO app.intent('Contact', (conv) => { const contactSimpleResponseScreen = InformationDFManager.generateContactSimpleResponseScreen(); conv.ask(contactSimpleResponseScreen); }); } private offices(offices, latitude, longitude, conv){ if (offices) { if (conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')) { const officesSimpleResponseScreen = InformationDFManager.generateOfficesSimpleResponseScreen(); const carouselOfOffices = InformationDFManager.generateOfficesBrowseCarousel(offices, latitude, longitude); conv.ask(officesSimpleResponseScreen); conv.ask(carouselOfOffices); } else { const officesSimpleResponseNoScreen = InformationDFManager.generateOfficesSimpleResponseNoScreen(offices); conv.ask(officesSimpleResponseNoScreen); } conv.ask(SuggestionDFManager.generateSuggestions()); } else { this.informationNullResponse(conv); } } private informationNullResponse(conv) { const response = InformationDFManager.generateInformationNullResponse(); conv.ask(response); } }