The present disclosure relates to third-party resource management. In particular, the present disclosure relates to managing third-party resources for an event within the context of a calendar application.
The following presents a simplified summary in order to provide a basic understanding of some aspects described herein. This summary is not an extensive overview of the claimed subject matter. This summary is not intended to identify key or critical elements of the claimed subject matter nor delineate the scope of the claimed subject matter. This summary's sole purpose is to present some concepts of the claimed subject matter in a simplified form as a prelude to the more detailed description that is presented later.
In an embodiment described herein, a calendar application server is described. The calendar application server includes a processor and a computer-readable storage medium operatively coupled to the processor. The computer-readable storage medium includes computer-executable instructions that, when executed by the processor, cause the processor to enable execution of a calendar application on a first remote computing system corresponding to a first calendar, where the first remote computing system is communicably coupled to the calendar application server through a network, as well as to provide a first event user interface surfaced on a first display of the first remote computing system in response to a user-initiated creation of an event with respect to a first calendar within the calendar application. The computer-executable instructions, when executed by the processor, also cause the processor to associate a third-party resource with the event within the calendar application in response to a first user command received via the first event user interface and to transmit an event invitation to a second remote computing system corresponding to a second calendar in response to a second user command received via the first event user interface, where the second remote computing system is communicably coupled to the calendar application server through the network. The computer-executable instructions, when executed by the processor, also cause the processor to enable execution of the calendar application on the second remote computing system, to associate the event with the second calendar and provide a second event user interface surfaced on a second display of the second remote computing system in response to a user-initiated acceptance of the event invitation, and to connect with the third-party resource associated with the event via an application programming interface corresponding to the third-party resource in response to a third user command received via the second event user interface, where the application programming interface is provided within the context of the calendar application. The computer-executable instructions, when executed by the processor, further cause the processor to generate third-party resource data for the event in response to a user interaction with the third-party resource via the application programming interface, as well as to reconcile the third-party resource data with event data corresponding to the event within the calendar application such that the event is updated with respect to the first calendar and the second calendar.
In another embodiment, a computer-readable storage medium is described. The computer-readable storage medium includes computer-executable instructions that, when executed by at least one processor, cause the at least one processor to associate a third-party resource with an event within a calendar application in response to a first user command received via an event user interface functionality provided by the calendar application, as well as to connect with the third-party resource via an application programming interface corresponding to the third-party resource in response to a second user command received via the event user interface functionality provided by the calendar application, where the application programming interface is provided within the context of the calendar application. The computer-executable instructions, when executed by the at least one processor, also cause the at least one processor to generate third-party resource data for the event in response to a user interaction with the third-party resource via the application programming interface provided within the context of the calendar application, as well as to reconcile the third-party resource data with event data corresponding to the event within the calendar application.
In another embodiment, a method for interacting with a third-party resource associated with an event within the context of a calendar application is described. The method is implemented in a computing system including a processor and a display operatively coupled to each other. The method includes executing, via the processor, the calendar application on the computing system, receiving, via the calendar application, an event invitation for an event including an associated third-party resource, and receiving, via the calendar application, a first user input including a command to provide an event user interface corresponding to the event. The method also includes providing the event user interface surfaced on the display in response to the first user input, receiving, via the event user interface, a second user input including a command to accept the event invitation, and associating the event with a calendar within the calendar application and providing an option to access the associated third-party resource via the event user interface in response to the second user input. The method also includes receiving, via the event user interface, a third user input including a command to access the third-party resource, as well as connecting with the third-party resource through an application programming interface corresponding to the third-party resource in response to the third user input, where the application programming interface is provided within the context of the calendar application. The method further includes receiving, via the event user interface, a fourth user input including a command to interact with the third-party resource via the application programming interface, interacting with the third-party resource via the application programming interface in response to the fourth user input to generate third-party resource data for the event, and reconciling the third-party resource data with event data corresponding to the event within the calendar application such that the event is updated with respect to the calendar.
The following description and the annexed drawings set forth in detail certain illustrative aspects of the claimed subject matter. These aspects are indicative, however, of a few of the various ways in which the principles of the innovation may be employed and the claimed subject matter is intended to include all such aspects and their equivalents. Other advantages and novel features of the claimed subject matter will become apparent from the following detailed description of the innovation when considered in conjunction with the drawings.
The following detailed description may be better understood by referencing the accompanying drawings, which contain specific examples of numerous features of the disclosed subject matter.
In today's environment, the use of calendar applications for time management and scheduling purposes has increased dramatically. In particular, such calendar applications are often used to create and/or manage events, such as virtual or in-person meetings, parties, appointments, conferences, and the like. Furthermore, in many cases, third-party resources are used for such events. As an example, when an event organizer plans a particular event, the event organizer may utilize various third-party services and/or applications for catering, decorating, transportation, entertainment, lodging, and the like. According to conventional techniques, when the event organizer creates the event within the calendar application, the event organizer may associate links to third-party websites and/or applications with the event within the calendar application. However, to actually access such third-party resources, the event organizer and individual event attendees must follow the links to the websites and/or applications and, thus, navigate away from the event view provided by the calendar application. Accordingly, the utilization of such third-party resources occurs outside the context of the calendar application and is not integrated into the event information within the calendar application in any meaningful way. This, in turn, places an additional burden on event organizers and event attendees since they are forced to separately manage and/or interact with all the third-party resources associated with the event.
Furthermore, according to current techniques, event attendees are generally limited in their interaction with the third-party resources. Specifically, due to the technical constraints imposed by current techniques, the scope of interaction between the event attendees and the third-party resources may be specifically defined by the event organizer such that the event attendees' choices with respect to the third-party resources are restricted. As a result, the event attendees' experience with respect to the event may be negatively impacted when the available third-party resource options do not adequately meet their needs and/or desires.
The present techniques solve this issue by providing for the management of third-party resources associated with an event within the context of a calendar application. In other words, the present techniques enable third-party resources to be managed as part of the event functionality provided by the calendar application, without separately navigating to the websites and/or applications associated with such third-party resources. According to embodiments described herein, this is accomplished via an event user interface (UI) that is provided by the calendar application to enable the user of the corresponding computing system to select a third-party resource and to connect with the third-party resource through an application programming interface (API). The event UI further enables the user to input information for interacting with the third-party resource through the API, as provided within the context of the calendar application. Any information input by the user is then automatically reconciled with the event information within the calendar application such that the third-party resource is directly associated with the event itself. As a result, the user is able to access and utilize the third-party resource within the context of the event view provided by the calendar application without having to separately manage the third-party resource. Accordingly, the present techniques simplify the process of planning and/or attending the event by deeply integrating relevant third-party services and/or applications with the calendar application such that the corresponding third-party resource(s) can be seamlessly managed within the context of the calendar application.
As a preliminary matter, some of the figures describe concepts in the context of one or more structural components, referred to as functionalities, modules, features, elements, etc. The various components shown in the figures can be implemented in any manner, for example, by software, hardware (e.g., discrete logic components, etc.), firmware, and so on, or any combination of these implementations. In one embodiment, the various components may reflect the use of corresponding components in an actual implementation. In other embodiments, any single component illustrated in the figures may be implemented by a number of actual components. The depiction of any two or more separate components in the figures may reflect different functions performed by a single actual component.
Other figures describe the concepts in flowchart form. In this form, certain operations are described as constituting distinct blocks performed in a certain order. Such implementations are exemplary and non-limiting. Certain blocks described herein can be grouped together and performed in a single operation, certain blocks can be broken apart into plural component blocks, and certain blocks can be performed in an order that differs from that which is illustrated herein, including a parallel manner of performing the blocks. The blocks shown in the flowcharts can be implemented by software, hardware, firmware, and the like, or any combination of these implementations. As used herein, hardware may include computing systems, discrete logic components, such as application specific integrated circuits (ASICs), and the like, as well as any combinations thereof.
As for terminology, the phrase “configured to” encompasses any way that any kind of structural component can be constructed to perform an identified operation. The structural component can be configured to perform an operation using software, hardware, firmware and the like, or any combinations thereof. For example, the phrase “configured to” can refer to a logic circuit structure of a hardware element that is to implement the associated functionality. The phrase “configured to” can also refer to a logic circuit structure of a hardware element that is to implement the coding design of associated functionality of firmware or software. The term “module” refers to a structural element that can be implemented using any suitable hardware (e.g., a processor, among others), software (e.g., an application, among others), firmware, or any combination of hardware, software, and firmware.
The term “logic” encompasses any functionality for performing a task. For instance, each operation illustrated in the flowcharts corresponds to logic for performing that operation. An operation can be performed using software, hardware, firmware, etc., or any combinations thereof.
As utilized herein, the terms “component,” “system,” “client,” and the like are intended to refer to a computer-related entity, either hardware, software (e.g., in execution), and/or firmware, or a combination thereof. For example, a component can be a process running on a processor, an object, an executable, a program, a function, a library, a subroutine, and/or a computer or a combination of software and hardware. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and a component can be localized on one computer and/or distributed between two or more computers.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any tangible, computer-readable storage medium.
Moreover, as used herein, the term “computer-readable storage medium” refers to an article of manufacture. In general, computer-readable storage media are used to host, store and/or reproduce computer-executable instructions and data for later retrieval and/or execution. When the computer-executable instructions that are hosted or stored on the computer-readable storage media are executed by a processor of a computing system, the execution thereof causes, configures and/or adapts the executing computing system to carry out various steps, processes, routines, methods and/or functionalities, including the steps, processes, routines, methods, and/or functionalities described herein. Examples of computer-readable storage media include, but are not limited to, optical storage media (such as Blu-ray discs, digital video discs (DVDs), compact discs (CDs), optical disc cartridges, and the like), magnetic storage media (such as hard disk drives, floppy disks, magnetic tape, and the like), memory storage devices (such as random access memory (RAM), read-only memory (ROM), memory cards, thumb drives, and the like), and cloud storage (such as online storage services). Computer-readable storage media may deliver computer-executable instructions to a computing system for execution via various transmission means and mediums, including carrier waves and/or propagated signals. However, for purposes of this disclosure, the term “computer-readable storage medium (or media)” refers specifically to non-transitory forms of computer-readable storage media and expressly excludes carrier waves and/or propagated signals.
The following is a description of several exemplary methods for implementing the third-party resource management techniques described herein. Specifically,
Turning now to the details of the exemplary method figures,
Turning now to the details of the method 100, the method 100 begins at block 102, at which execution of a calendar application is enabled on a first remote computing system corresponding to a first calendar. According to embodiments described herein, the calendar application may include any application that includes calendar, scheduling, and/or time management functionalities, even if the application also provides other, non-calendar-related functionalities. Non-limiting examples of such calendar applications include the Microsoft Outlook application and the Microsoft Teams application provided by Microsoft Corporation. Moreover, according to the embodiment described with respect to
At block 104, a first event user interface is provided surfaced on a first display of the first remote computing system in response to a user-initiated creation of an event with respect to a first calendar within the calendar application. According to embodiments described herein, the term “event” may include any type of meeting, party, appointment, conference, or other scheduling item within a calendar, whether such meeting, party, appointment, conference, or other scheduling item is virtual or in-person. In addition, the term “event user interface” refers to a machine-user interface (such as, for example, a graphical user interface) including an interactive visualization that enables a user of a computing system to visualize and interact with event data corresponding to the event through graphical elements, icons, and the like rendered on the display of the computing system. Moreover, the event user interface described herein includes additional functionalities for enabling the user of the computing system to interact with one or more third-party resources without switching contexts or, in other words, without navigating away from the calendar application, as described further herein. Furthermore, the terms “first” and “second”, when used in reference to the event user interface and other aspects or elements of the techniques described herein, are generally used to describe the event user interface and other aspects/elements from the perspective of different users. For example, the terms “first event user interface” and “second event user interface” are generally used to refer to differing views of the event user interface based on the role of the user operating the computing system. For example, the first event user interface surfaced on the first display of the first computing system may be operated by the event organizer, while the second event user interface surfaced on the second display of the second computing system may be operated by an event attendee. In addition, those skilled in the art will appreciate the event user interface described herein can take various forms depending on the manner in which it is provided. In particular, in some embodiments, the event user interface may be provided by the calendar application within the context of the overall calendar user interface. However, in other embodiments, the event user interface (or some portion thereof) may be provided by the calendar application within the context of a messaging user interface (such as, for example, an email or chat-based messaging user interface, as described further herein).
At block 106, a third-party resource is associated with the event within the calendar application in response to a first user command received via the first event user interface. In various embodiments, the third-party resource includes a third-party service or application offering at least one type of goods (e.g., office equipment, party supplies, food, consumer goods, or the like), a third-party service or application offering at least one type of service (e.g., transportation services, lodging services, entertainment services, cleaning services, or the like), or a third-party service or application offering some combination of goods and services. Moreover, in various embodiments, a number of different third-party resources are associated with the event. As an example, if the event is a work conference, multiple third-party resources may be associated with the work conference to enable the event attendees to, for example, book flights, reserve hotel rooms, and schedule taxi services to and from the event venue.
In various embodiments, associating the third-party resource(s) with the event includes an authorization for one or more event attendees to interact with the third-party resource(s) via the event user interface functionality provided by the calendar application to, for example, select desired goods for the event and/or schedule one or more desired services for the event. Moreover, such an authorization to interact with the third-party resource(s) may include information associated with the event attendees' authorized budget for ordering such goods and/or services. As an example, if the event organizer authorizes the event attendee(s) to interact with a travel application to schedule flights and/or hotels for the event, the event organizer may also include a specific budget for each event attendee during the association of the travel application with the event.
At block 108, an event invitation is transmitted to a second remote computing system corresponding to a second calendar in response to a second user command received via the first event user interface. In various embodiments, the second user command includes an input of the electronic contact information (e.g., email addresses) of the desired event attendee(s) by the event organizer operating the first remote computing system, as well as the sending of the event invitation to such event attendee(s) via electronic means (e.g., via the email or messaging functionality provided by the calendar application itself or another integrated application). Moreover, in various embodiments, the event attendee(s) may receive the event invitation in various forms, such as, for example, as a calendar notification and/or as an email or chat-based message.
At block 110, execution of the calendar application is enabled on the second remote computing system. In some embodiments, the execution of the calendar application is initiated in response to a user input including an opening of the event invitation by the event attendee operating the second remote computing system. For example, if the event attendee receives the event invitation as an email message within their email inbox, the calendar application may be executed in response to the event attendee clicking on a user interface element embedded within the email message.
At block 112, the event is associated with the second calendar and a second event user interface is provided surfaced on a second display of the second remote computing system in response to a user-initiated acceptance of the event invitation. In various embodiments, the user-initiated acceptance of the event invitation is in the form of a user input via a user interface element that indicates an intention to attend the event. Moreover, in various embodiments, the association of the event with the second calendar includes the integration of the event data into the calendar data corresponding to the second calendar, as well as the incorporation of the event into the calendar view that is provided by the calendar user interface.
At block 114, in response to a third user command received via the second event user interface, a connection is established with the third-party resource associated with the event via an application programming interface (API) corresponding to the third-party resource, where the application programming interface is provided within the context of the calendar application. In various embodiments, the third user command includes a user input indicating a desire to access the third-party resource. Such user input may be received in the form of a user selection of (or interaction with) a toggle, button, dropdown menu, or other user interface element provided by the event user interface. Moreover, in response to such user input, the calendar application may automatically establish the connection with the third-party resource via the application programming interface. Specifically, in various embodiments, the application programming interface enables the calendar application server (and/or the remote computing system executing the calendar application) to communicate with the third-party service or application over the network. Furthermore, in various embodiments, the connection with the third-party resource may be visually presented in the form of an overlay of information corresponding to the third-party resource within the event user interface surfaced on the display. Such visually-overlaid information may include, but is not limited to, options for goods and/or services that the third-party service or application is capable of providing for the event.
Moreover, in some embodiments, a connection may be simultaneously established with multiple third-party resources associated with the event via corresponding application programming interfaces corresponding to the third-party resources. In such embodiments, the connection with the third-party resources may be visually presented in the form of an overlay of information corresponding to all the third-party resources within the event user interface surfaced on the display, such that the goods and/or services offered by the different third-party services can be easily viewed and/or compared.
At block 116, third-party resource data are generated for the event in response to user interaction with the third-party resource. In various embodiments, the user interaction with the third-party resource includes a selection of desired goods and/or services for the event. Moreover, the third-party resource data may include data corresponding to the event attendee's selection of such desired goods and/or services, as well as expense information (if any) corresponding to the selection.
At block 118, the third-party resource data are reconciled with event data corresponding to the event within the calendar application such that the event is updated with respect to the first calendar and the second calendar. In various embodiments, the reconciled event data are then provided to the first remote computing system operated by the event organizer such that the third-party resource data generated as a result of the user interaction with the third-party resource is presented via the first event user interface surfaced on the first display. In addition, in such embodiments, an expense report may be provided to the first remote computing system corresponding to the first calendar. The expense report may include any expenses associated with the user interaction with the third-party resource(s) via the second remote computing system corresponding to the second calendar. For example, the expense report may include the cost of the goods and/or services selected by the event attendee operating the second remote computing system.
In some embodiments, this expense report functionality may be provided by the calendar application itself. However, in other embodiments, the expense report functionality may be provided by another third-party resource. In such embodiments, the calendar application may enable the third-party resource providing the expense report functionality to access the reconciled event data including the third-party resource data to extract the information needed for generating the expense report.
Moreover, in various embodiments, the calendar application may enable any number of other third-party resources to access the reconciled event data (or some portion thereof) to coordinate other tasks or to provide other goods/services for the event. As an example, if the reconciled event data includes information regarding food that is being provided for the event, the calendar application may enable a third-party resource offering beverages to view the reconciled event data including the food information to determine suitable beverages for the event. As another example, if the reconciled event data includes information regarding decorations and/or other supplies that are being provided for the event, the calendar application may enable a third-party resource offering event setup/teardown services to view the reconciled event data including the decoration/supplies information to plan the event setup and/or teardown before the event.
Furthermore, those skilled in the art will appreciate that, in some embodiments, blocks 108-116 may be provided for one or more additional remote computing systems, particularly for embodiments in which the event invitation is sent to more than one event attendee. Therefore, in such embodiments, the corresponding third-party resource data received from the second remote computing system and the additional remote computing system(s) may be reconciled with the event data corresponding to the event within the calendar application. The reconciled event data may then be provided to the first remote computing system such that the third-party resource data generated as a result of the user interactions with the third-party resource(s) are presented via the first event user interface surfaced on the first display. In various embodiments, this enables the event organizer operating the first remote computing system to easily manage all the goods and/or services associated with the event from the event user interface provided by the calendar application, as well as to easily manage the expense associated with the goods and/or services. As an example, if the event is a virtual team meeting early in the morning, the event organizer may utilize the event user interface provided by the calendar application to enable each event attendee to spend a specified amount of money ordering their preferred coffee beverage from a particular coffee shop (or from their own preferred or local coffee shop), and the event organizer may then receive a consolidated expense report including the costs associated with the event.
The block diagram of
Furthermore, in some embodiments, the term “event” may encompass multiple events that are linked together within the calendar application. For example, if an event organizer is planning multiple, back-to-back meetings with the same event attendees, the event organizer may want to associate one or more third-party resources with both meetings such that the event attendees have a specified budget for ordering goods and/or services for both meetings. Accordingly, the event user interface may include a linking option by which the event organizer can provide input (e.g., via a toggle, toggle, button, dropdown menu, or other user interface element) indicating an intention to link the two meetings together such that they are treated as one event with respect to the third-party resource management techniques described herein.
In addition, while the third-party resource management techniques provided herein are primarily described with reference to managing third-party resources for newly-created events, those skilled in the art will appreciate that such techniques can be easily extended to managing third-party resources for existing events. In particular, the techniques described herein may enable the user to associate third-party resources with an event at any time before the occurrence of the event.
The method 200 begins at block 202, at which a calendar application is executed on the computing system to provide a calendar user interface surfaced on the display. At block 204, a first user input including a command to create an event within a calendar is received via the calendar user interface. At block 206, the event is created within the calendar and an event user interface is provided surfaced on the display in response to the first user input.
At block 208, a second user input including a command to associate a third-party resource with the event is received via the event user interface. In addition, at block 210, the third-party resource is associated with the event within the calendar application in response to the second user input.
The block diagram of
The method 300 begins at block 302, at which the calendar application is executed on the computing system. At block 304, an event invitation for an event including an associated third-party resource is received via the calendar application. At block 306, a first user input including a command to provide an event user interface corresponding to the event is received via the calendar application. Moreover, at block 308, the event user interface is provided surfaced on the display in response to the first user input.
At block 310, a second user input including a command to accept the event invitation is received via the event user interface. At block 312, the event is associated with a calendar within the calendar application and an option to access the associated third-party resource is provided via the event user interface in response to the second user input. At block 314, a third user input including a command to access the third-party resource is received via the event user interface. Moreover, at block 316, a connection is established with the third-party resource through an application programming interface corresponding to the third-party resource in response to the third user input, where the application programming interface is provided within the context of the calendar application.
The method 300 then proceeds to block 318, at which a fourth user input including a command to interact with the third-party resource via the application programming interface is received via the event user interface. At block 320, an interaction with the third-party resource is carried out via the application programming interface in response to the fourth user input, resulting in the generation of third-party resource data for the event. At block 322, the third-party resource data are reconciled with event data corresponding to the event within the calendar application such that the event is updated with respect to the calendar.
The block diagram of
The memory 404 typically (but not always) includes both volatile memory 406 and non-volatile memory 408. The volatile memory 406 retains or stores information so long as the memory is supplied with power. By contrast, the non-volatile memory 408 is capable of storing (or persisting) information even when a power supply is not available. The volatile memory 406 may include, for example, RAM (e.g., synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), and the like) and CPU cache memory. The nonvolatile memory 408 may include, for example, read-only memory (ROM) (e.g., programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEROM) or the like), flash memory, nonvolatile random-access memory (RAM), solid-state memory devices, memory storage devices, and/or memory cards.
The processor 402 and the memory 404, as well as other components of the computing system 400, are interconnected by way of a system bus 410. The system bus 410 can be implemented using any suitable bus architecture known to those skilled in the art.
According to the embodiment shown in
In various embodiments, the disk storage 412 and/or the memory 404 are used to store data 416 relating to the techniques described herein. Such data may include, for example, event data 418 relating to one or more events scheduled with respect to a calendar application, as well as third-party resource data 420 that are associated with the one or more events and may be reconciled with the event data, as described herein.
Those skilled in the art will appreciate that
The computing system 400 also includes an input/output (I/O) subsystem 428. The I/O subsystem 428 includes a set of hardware, software, and/or firmware components that enable or facilitate inter-communication between the user of the computing system 400 and the processor 402 of the computing system 400. During operation of the computing system 400, the I/O subsystem 428 enables the user to interact with the computing system 400 through various input/output (I/O) devices 430. Such I/O devices 430 may include any number of input devices or channels, such as, for example, one or more touchscreen/haptic input devices, one or more buttons, one or more pointing devices, one or more accessories, one or more audio input devices, and/or one or more video input devices, such as a camera. As an example, in some embodiments, such input devices or channels include one or more Natural User Interface (NUI) devices, where the term “Natural User Interface (NUI)” refers to any interface technology that enables a user to interact with a device in a “natural” manner, free from artificial constraints imposed by input devices such as mice, keyboards, remote controls, and the like. In some examples, NUI devices include devices relying on speech recognition, touch and stylus recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, voice and speech, vision, touch, gestures, and machine intelligence. For example, NUI devices can include touch-sensitive displays, voice and speech recognition, intention and goal understanding, and motion gesture detection using depth cameras such as stereoscopic camera systems, infrared camera systems, RGB camera systems, and combinations of these. NUI devices can also include motion gesture detection using accelerometers or gyroscopes, facial recognition, three-dimensional (3D) displays, head, eye, and gaze tracking, immersive augmented-reality and virtual-reality systems, all of which provide a more natural interface. Furthermore, in some embodiments the one or more input devices or channels connect to the processor 402 through the system bus 410 via one or more interface ports (not shown) integrated within the I/O subsystem 428. Such interface ports may include, for example, a serial port, a parallel port, a game port, and/or a universal serial bus (USB).
In addition, such I/O devices 430 may include any number of output devices or channels, such as, for example, one or more audio output devices, one or more haptic feedback devices, and/or one or more display devices, such as display 432. Such output devices or channels may use some of the same types of ports as the input devices or channels. Thus, for example, a USB port may be used to both provide input to the computing system 400 and to output information from the computing system 400 to a corresponding output device. Moreover, in some embodiments, the one or more output devices or channels are accessible via one or more adapters (not shown) integrated within the I/O subsystem 428.
In some embodiments, the display 432 is a built-in display screen of the computing system 400. In other embodiments, the display 432 is an external display screen. Moreover, in various embodiments, the display 432 is a touchscreen that serves as both an input and an output device.
In various embodiments, the computing system 400 is communicably coupled to one or more remote computing systems 434. As an example, for embodiments in which the computing system 400 is operated by an event organizer, the remote computing system(s) 434 may be operated by corresponding event attendee(s). As another example, for embodiments in which the computing system 400 is operated by an event attendee, the remote computing system(s) 434 may be operated by a corresponding event organizer and (optionally) one or more additional event attendees.
As another example, in some embodiments, the computing system 400 (or a portion thereof) is a server hosting various software applications in a networked environment using logical connections to the remote computing systems 434. In such embodiments, any number of the components shown in
The one or more remote computing systems 434 may be, for example, client systems configured with web browsers, PC applications, mobile phone applications, and the like. In addition, the remote computing systems 434 may include, for example, one or more personal computers, one or more servers, one or more routers, one or more network PCs, one or more workstations, one or more microprocessor-based appliances, one or more mobile phones, and/or one or more peer devices or other common network nodes.
In various embodiments, the remote computing devices 434 are logically connected to the computing system 400 through a network 436 and then connected via a communication connection 438, which may be wireless. The network 436 encompasses wireless communication networks, such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring, and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
The communication connection 438 includes the hardware/software employed to connect the network 436 to the bus 410. While communication connection 438 is shown for illustrative clarity as residing inside the computing system 400, it can also be external to the computing system 400. The hardware/software for connection to the network 436 may include, for example, internal and external technologies, such as mobile phone switches, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and/or Ethernet cards.
As described above, system applications 424, such as the calendar application 440 described herein, take advantage of the management of the computing resources by the operating system 422 through one or more program modules stored within the computer-readable storage medium (or media) 426. In some embodiments, the computer-readable storage medium 426 is integral to the computing system 400, in which case it may form part of the memory 404 and/or the disk storage 412. In other embodiments, the computer-readable storage medium 426 is an external device that is connected to the computing system 400 when in use.
In various embodiments, the one or more program modules stored within the computer-readable storage medium 426 include program instructions or code that may be executed by the processor 402 to perform various operations, including the third-party resource management techniques described herein. In various embodiments, such program modules include, but are not limited to, a third-party resource management module 442 that causes the processor 402 to perform operations that result in the execution of the techniques described herein for managing third-party resources for events within the context of the calendar application 440, as described herein with respect to the methods 100, 200, and 300 of
Furthermore, as shown in
It is to be understood that the block diagram of
In various embodiments, the event organizer computing system 504 and the event attendee computing systems 506 each include a processor, memory, disk storage, and input/output subsystem that operatively couple one or more input/output devices to the processor, as described with respect to the computing system 400 of
In various embodiments, the calendar application server 502 hosts an event user interface 510A and 5108 on a display 512A and 5128 of each remote computing system 504 and 506, as indicated by arrow 514A and 514B, respectively. In various embodiments, this is accomplished by executing, via a processor 516 of the calendar application server 502, a calendar application 518 in conjunction with a third-party resource management module 520 stored within a computer-readable storage medium 522 of the calendar application server 502, as described further with respect to
In various embodiments, the calendar application server 502 further enables one or more third-party resources 526 (e.g., one or more third-party services or applications providing particular types of goods and/or services) to be associated with events within the calendar application 518. For example, the calendar application server 502 may associate the event corresponding to the event user interface 510A with the third-party resource(s) 526 corresponding to third-party resource server(s) 528, for example, in response to one or more user inputs or commands received via the event user interface 510A surfaced on the display 512A of the event organizer computing system 504. In addition, the calendar application 502 may connect with each third-party resource 526 via a corresponding application programming interface (API) 530 in response to a user input or command received via the event user interface 5108 surfaced on the display 5128 of the event attendee computing system 506. Furthermore, the calendar application 502 may then interact with the third-party resource(s) 526 via the corresponding application programming interface(s) 530 in response to additional user inputs or commands received via the event user interface 5108, where such user inputs or commands may relate to, for example, the purchase of goods and/or services from the third-party resource(s) 526.
It is to be understood that the block diagram of
In various embodiments, the computer-readable storage medium 600 includes code (i.e., computer-executable instructions) to direct the processor 602 to perform the operations of the present techniques. Such code may be stored within the computer-readable storage medium 600 in the form of program modules, where each module includes a set of computer-executable instructions that, when executed by the processor 602, cause the processor 602 to perform a corresponding set of operations. In particular, in various embodiments, the computer-readable storage medium 600 includes a third-party resource management module 606 that directs the processor 602 to perform the techniques described herein (or any suitable variation thereof). Such techniques include, but are not limited to, the methods 100, 200, and 300 described with respect to
Furthermore, in various embodiments, the third-party resource management module 606 accomplishes this via a number of sub-modules. Such sub-modules may include, but are not limited to, a third-party resource event association sub-module 608 for associating a third-party resource with an event within a calendar application in response to a user command received via an event user interface functionality provided by the calendar application, a third-party resource connection sub-module 610 for connecting with the third-party resource via an application programming interface corresponding to the third-party resource in response to another user command received via the event user interface functionality provided by the calendar application (where the application programming interface is provided within the context of the calendar application), a third-party resource data generation sub-module 612 for generating third-party resource data for the event in response to user interaction with the third-party resource via the application programming interface provided within the context of the calendar application, and an event data reconciliation sub-module 614 for reconciling the generated third-party resource data with event data corresponding to the event within the calendar application.
Moreover, those skilled in the art will appreciate that any suitable number of the modules/sub-modules shown in
The following is a description of several exemplary implementations of the third-party resource management techniques described herein for particular use-case scenarios. Those skilled in the art will appreciate that such exemplary implementations are for illustrative purposes only. In practice, the third-party resource management techniques described herein may be implemented in any other suitable manner to achieve any other suitable results, depending on the details of the particular implementation.
Turning now to the details of the first exemplary implementation,
In addition, the third-party resource panel 708 may display the maximum charge for interacting with the third-party resources, as determined based on the number of desired event attendees and the specified budget of each event attendee. For example, according to the embodiment shown in
As shown in
Moreover, in various embodiments, the third-party resource confirmation message 724 includes details regarding the event attendee's interaction with the third-party resource, such as, for example, the budget, the selected third-party resource, and the total cost associated with the interaction. For example, according to the embodiment shown in
In various embodiments, the third-party resource confirmation message 724 further serves as confirmation that the third-party resource data generated as a result of the event attendee's interaction with the third-party resource has been reconciled with the event data corresponding to the event. In this manner, the event is updated within the calendar application such that information relating to the third-party resource is directly associated with the event.
Turning now to the details of the second exemplary implementation,
In various embodiments, the event invitation may then be received at remote computing systems operated by the event attendees, enabling such event attendees to interact with the third-party resource(s) to generate third-party resource data for the event, as described herein. In particular, according to the embodiment described with respect to
Turning now to the details of the third exemplary implementation,
Moreover, in various embodiments, the third-party resource confirmation message 912 includes details regarding the event organizer's interaction with the third-party resource, such as, for example, the selected third-party resource and the total cost associated with the interaction. For example, according to the embodiment shown in
In various embodiments, the third-party resource confirmation message 912 further serves as confirmation that the third-party resource data generated as a result of the event organizer's interaction with the third-party resource has been reconciled with the event data corresponding to the event. In this manner, the event is updated within the calendar application such that information relating to the third-party resource is directly associated with the event.
Turning now to the details of the fourth exemplary implementation,
In various embodiments, the event invitation may then be received at remote computing systems operated by the event attendees, enabling such event attendees to interact with the third-party resource(s) to generate third-party resource data for the event, as described herein. In particular, according to the embodiment described with respect to
Furthermore, those skilled in the art will appreciate that the third-party resource management techniques described herein can be used for any number of additional use-case scenarios. For example, the third-party resource management techniques may be used to provide chat-based functionalities. Such chat-based functionalities may be provided, at least in part, with respect to a chat-based messaging user interface of the calendar application, such as the “Chat” user interface provided by Microsoft Teams. Such chat-based functionalities may be used to provide educational (or other) resources to one or more team members (or work colleagues), to send a reward, thank you, or other gift to one or more team members, and/or to quickly book services and/or purchase goods for an event, for example. In various embodiments, such chat-based functionalities are provided on demand in response to the user invoking the third-party resource management techniques described herein, such as via user interaction with a user interface element corresponding to the third-party resource management techniques or via the input of textual and/or voice commands indicating a desire to utilize the third-party resource management techniques. Accordingly, those skilled in the art will appreciate that the third-party resource management techniques described herein can be fully integrated into any or all aspects of the calendar application such that the user is able to quickly and efficiently associate third-party resources with one or more events on demand with minimal user input.
As will be appreciated by those skilled in the art, the techniques described herein may enhance users' experiences with respect to events in various ways, both from the perspective of event organizers and event attendees. In particular, the techniques described herein may increase the productivity of users by deeply integrating offline resource management capabilities into the calendar application, as well as enabling such resources to be directly associated with particular calendar events. In this manner, the techniques described herein extend the traditional role of the calendar application as a scheduling intent management hub by transforming the calendar application into essentially an all-in-one hub, meaning that the user can utilize the calendar application to directly manage all the resources associated with events, rather than merely expressing scheduling intentions for such events. Accordingly, the user is able to complete multiple tasks at various levels using the calendar application, without having to continuously switch between different applications and/or websites.
The techniques described herein may also enable the social constructs of in-person meetings to be effectively extended to virtual meetings, such as meetings that occur via videoconference. This is particularly beneficial for hybrid work meetings in which some colleagues attend the meeting in person, while other colleagues attend the meeting virtually. In particular, the ability to easily provide the same goods and/or services to all colleagues attending the meeting, whether in person or virtually, may increase the sense of togetherness or social connection between colleagues.
In general, the techniques described herein may improve the experience of everyone attending a particular event. For example, from the perspective of the event organizer, the techniques described herein simplify and streamline the planning process by enabling third-party resources to be quickly and efficiently linked to the event in a manner that enables input from the event attendees, as well as by automatically calculating all costs associated with such third-party resources and allowing such costs to be expensed using one receipt that consolidates the responses from all the event attendees. From the perspective of the event attendees, the techniques described herein provide a seamless and customized event experience by enabling the event attendees to make their own choices regarding the event within minimal input (e.g., with only a few clicks) and, thus, with minimal hassle.
The techniques described herein may improve event logistics across the board by enabling the ordering of tangible goods and/or the scheduling of services for an event, all within the context of the calendar application. As described herein, such tangible goods may include, for example, the food, supplies, and/or equipment for the event, while such services may include, for example, renting the venue and/or arranging transportation and/or lodging for the event. As more specific examples, the techniques described herein may be used to schedule transit or carpool rides to and from buildings for work events, to purchase equipment for a new employee before a scheduled start date, or to order decorations and other supplies for a party.
In some embodiments, the techniques described herein may further simplify and streamline resource management for an event by providing the option to select particular third-party resource management packages. Such packages may include, for example, large corporate meeting packages, small team meeting packages, party packages, office supplies packages, entertainment packages, new employee packages, conference packages, concert packages, and the like. As will be appreciated by those skilled in the art, any number of different types of packages can be envisioned, and such packages can also be customized to the needs to each user.
In various embodiments, machine learning methods can be used to extend the third-party resource management techniques described herein. For example, in some embodiments, the third-party resource management module may utilize one or more types of machine learning models, such as, for example, supervised machine learning models, unsupervised machine learning models, and/or reinforcement learning models, to effectively learn what third-party resources are mostly likely to be of interest to the user. As an example, the third-party resource management module may utilize such machine learning models to predict that a user may be interested in a particular store if the user is located proximate to the store and the user's history (e.g., the user's email history, chat history, browser history, and/or calendar history) shows that the user has previously ordered the types of goods offered by the store. As another example, the third-party resource management module may utilize such machine learning models to predict that a user may be interested in scheduling a particular type of service if the user's history shows that the user has previously scheduled a similar type of service. As another example, the third-party resource management module may utilize such machine learning models to make broad predictions about similarities between users, such as, for example, predictions based on types of goods and/or services that are typically purchased and/or scheduled at the same time. This may then be provided to the user via the event user interface in the form of a message saying that users who purchase/schedule the particular goods/service typically also like another particular type of goods/service.
Moreover, in various embodiments, the third-party resource management module described herein is integrated into the calendar application in the form of a software add-in that can be invoked during the execution of the calendar application. As an example, for embodiments in which the third-party resource management module is installed as an add-in for a chat-based application that includes scheduling functionalities (such as, for example, Microsoft Teams), the user may invoke the third-party resource management module on demand from the chat user interface and/or the calendar user interface provided by the application. In this manner, the third-party resource management module enables the user to quickly and efficiently manage third-party resources for events at any time.
Furthermore, it should be noted that, while the methods and processes described herein are generally expressed in regard to discrete steps, these steps should be viewed as being logical in nature and may or may not correspond to any specific actual and/or discrete steps of a given implementation. In addition, the order in which these steps are presented in the various methods and processes, unless otherwise indicated, should not be construed as the only order in which the steps may be carried out. Moreover, in some instances, some of these steps may be combined and/or omitted. Those skilled in the art will recognize that the logical presentation of steps is sufficiently instructive to carry out aspects of the claimed subject matter irrespective of any particular development or coding language in which the logical instructions/steps are encoded.
Of course, while the methods and processes described herein include various novel features of the disclosed subject matter, other steps (not listed) may also be carried out in the execution of the subject matter set forth in these methods and processes. Those skilled in the art will appreciate that the logical steps of these methods and processes may be combined together or split into additional steps. Steps of the above-described methods and processes may be carried out in parallel or in series. Often, but not exclusively, the functionality of a particular method or process is embodied in software (e.g., applications, system services, libraries, and the like) that is executed on one or more processors of computing systems. Additionally, in various embodiments, all or some of the various methods and processes may also be embodied in executable hardware modules including, but not limited to, system on chips (Sot's), codecs, specially designed processors and/or logic circuits, and the like, on a computing system.
As suggested above, each method or process described herein is typically embodied within computer-executable instruction (or code) modules including individual routines, functions, looping structures, selectors and switches (such as if-then and if-then-else statements), assignments, arithmetic computations, and the like, that, in execution, configure a computing system to operate in accordance with the particular method or process However, as suggested above, the exact implementation in executable statement of each of the methods or processes is based on various implementation configurations and decisions, including programming languages, compilers, target processors, operating environments, and the linking or binding operation. Those skilled in the art will readily appreciate that the logical steps identified in these methods and processes may be implemented in any number of ways and, thus, the logical descriptions set forth above are sufficiently enabling to achieve similar results.
While various novel aspects of the disclosed subject matter have been described, it should be appreciated that these aspects are exemplary and should not be construed as limiting. Variations and alterations to the various aspects may be made without departing from the scope of the disclosed subject matter.
Example 1 is a calendar application server, including a processor and a computer-readable storage medium operatively coupled to the processor. The computer-readable storage medium includes computer-executable instructions that, when executed by the processor, cause the processor to: (1) enable execution of a calendar application on a first remote computing system corresponding to a first calendar, wherein the first remote computing system is communicably coupled to the calendar application server through a network; (2) provide a first event user interface surfaced on a first display of the first remote computing system in response to a user-initiated creation of an event with respect to a first calendar within the calendar application; (3) in response to a first user command received via the first event user interface, associate a third-party resource with the event within the calendar application; (4) in response to a second user command received via the first event user interface, transmit an event invitation to a second remote computing system corresponding to a second calendar, wherein the second remote computing system is communicably coupled to the calendar application server through the network; (5) enable execution of the calendar application on the second remote computing system; (6) associate the event with the second calendar and provide a second event user interface surfaced on a second display of the second remote computing system in response to a user-initiated acceptance of the event invitation; (7) in response to a third user command received via the second event user interface, connect with the third-party resource associated with the event via an application programming interface corresponding to the third-party resource, wherein the application programming interface is provided within the context of the calendar application; (8) in response to a user interaction with the third-party resource via the application programming interface, generate third-party resource data for the event; and (9) reconcile the third-party resource data with event data corresponding to the event within the calendar application such that the event is updated with respect to the first calendar and the second calendar.
Example 2 includes the calendar application server of example 1, including or excluding optional features. In this example, the third-party resource includes a third-party service or application offering at least one type of goods, and the association of the third-party resource with the event includes an authorization to interact with the third-party resource to select desired goods for the event. In addition, in this example, the generation of the third-party resource data for the event is in response to the selection of the desired goods.
Example 3 includes the calendar application server of example 1 or 2, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, cause the processor to associate a number of third-party resources with the event within the calendar application, where each third-party resource includes a third-party service or application offering at least one type of goods, and where the association of the third-party resources with the event includes an authorization to interact with any of the third-party resources to select desired goods for the event. In addition, in this example, the generation of the third-party resource data for the event is in response to the selection of the desired goods with respect to at least one of the third-party resources.
Example 4 includes the calendar application server of any one of examples 1 to 3, including or excluding optional features. In this example, the third-party resource includes a third-party service or application offering a type of service, and the association of the third-party resource with the event includes an authorization to interact with the third-party resource to schedule a desired service for the event. In addition, in this example, the generation of the third-party resource data for the event is in response to the scheduling of the desired service.
Example 5 includes the calendar application server of any one of examples 1 to 4, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, cause the processor to associate a number of third-party resources with the event within the calendar application, where each third-party resource includes a third-party service or application offering a type of service, and the association of the third-party resources with the event includes an authorization to interact with any of the third-party resources to schedule at least one desired service for the event. In addition, in this example, the generation of the third-party resource data for the event is in response to the scheduling of the at least one desired service with respect to at least one of the third-party resources.
Example 6 includes the calendar application server of any one of examples 1 to 5, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, cause the processor to provide the reconciled event data to the first remote computing system such that the third-party resource data generated as a result of the user interaction with the third-party resource is presented via the first event user interface surfaced on the first display.
Example 7 includes the calendar application server of example 6, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, further cause the processor to provide an expense report to the first remote computing system corresponding to the first calendar, where the expense report includes any expenses associated with the user interaction with the third-party resource via the second remote computing system corresponding to the second calendar.
Example 8 includes the calendar application server of any one of examples 1 to 7, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, further cause the processor to perform the transmission of the event invitation, the enablement of the execution of the calendar application on a corresponding computing system, the association of the event with a corresponding calendar, the providing of a corresponding event user interface, the connection with the third-party resource, and the generation of corresponding third-party resource data for at least one additional remote computing system. In addition, in this example, the computer-executable instructions, when executed by the processor, cause the processor to reconcile the corresponding third-party resource data received from the second remote computing system and the least one additional remote computing system with the event data corresponding to the event within the calendar application.
Example 9 includes the calendar application server of example 8, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, cause the processor to provide the reconciled event data to the first remote computing system such that the third-party resource data generated as a result of the user interactions with the third-party resource is presented via the first event user interface surfaced on the first display.
Example 10 includes the calendar application server of any one of examples 1 to 9, including or excluding optional features. In this example, the computer-executable instructions, when executed by the processor, further cause the processor to connect with the third-party resource associated with the event via the application programming interface corresponding to the third-party resource in response to a fourth user command received via the first event user interface, where the application programming interface is provided within the context of the calendar application, as well as to generate additional third-party resource data for the event in response to a second user interaction with the third-party resource via the application programming interface. In this example, the computer-executable instructions, when executed by the processor, also cause the processor to reconcile the additional third-party resource data with the event data corresponding to the event within the calendar application such that the event is further updated with respect to the first calendar and the second calendar.
Example 11 includes the calendar application server of any one of examples 1 to 10, including or excluding optional features. In this example, the calendar application includes an application with at least one of a calendar functionality, a scheduling functionality, or a time management functionality.
Example 12 is a computer-readable storage medium including computer-executable instructions that, when executed by a processor, cause the processor to: (1) associate a third-party resource with an event within a calendar application in response to a first user command received via an event user interface functionality provided by the calendar application; (2) connect with the third-party resource via an application programming interface corresponding to the third-party resource in response to a second user command received via the event user interface functionality provided by the calendar application, wherein the application programming interface is provided within the context of the calendar application; (3) generate third-party resource data for the event in response to a user interaction with the third-party resource via the application programming interface provided within the context of the calendar application; and (4) reconcile the third-party resource data with event data corresponding to the event within the calendar application.
Example 13 is the computer-readable storage medium of example 12, including or excluding optional features. In this example, the computer-executable instructions, when executed by the at least one processor, cause the at least one processor to receive data relating to the first user command from a first remote computing system corresponding to a first calendar, as well as to receive data relating to the second user command and the user interaction with the third-party resource from a second remote computing system corresponding to the second calendar.
Example 14 includes the computer-readable storage medium of example 12 or 13, including or excluding optional features. In this example, the computer-executable instructions, when executed by the at least one processor, cause the at least one processor to receive data relating to the first user command, the second user command, and the user interaction with the third-party resource from a first remote computing system corresponding to a first calendar.
Example 15 includes the computer-readable storage medium of any one of examples 12 to 14, including or excluding optional features. In this example, the computer-executable instructions, when executed by the at least one processor, cause the at least one processor to: (1) associate a number of third-party resources with the event within the calendar application in response to the first user command received via the event user interface functionality provided by the calendar application; (2) connect with any of the third-party resources via a corresponding application programming interface in response to at least one user command received via the event user interface functionality provided by the calendar application; (3) generate third-party resource data for the event in response to at least one user interaction with any of the third-party resources via the corresponding application programming interface provided within the context of the calendar application; and (4) reconcile the third-party resource data with the event data corresponding to the event within the calendar application.
Example 16 includes the computer-readable storage medium of any one of examples 12 to 15, including or excluding optional features. In this example, the third-party resource includes a third-party service or application offering at least one type of goods; the association of the third-party resource with the event includes an authorization to interact with the third-party resource to select desired goods for the event; and the generation of the third-party resource data for the event is in response to the selection of the desired goods.
Example 17 includes the computer-readable storage medium of any one of examples 12 to 16, including or excluding optional features. In this example, the third-party resource comprises a third-party service or application offering a type of service; the association of the third-party resource with the event includes an authorization to interact with the third-party resource to schedule a desired service for the event; and the generation of the third-party resource data for the event is in response to the scheduling of the desired service.
Example 18 is a method for interacting with a third-party resource associated with an event within a context of a calendar application. The method is implemented in a computing system including a processor and a display operatively coupled to each other. The method includes: (1) executing, via the processor, the calendar application on the computing system; (2) receiving, via the calendar application, an event invitation for an event including an associated third-party resource; (3) receiving, via the calendar application, a first user input including a command to provide an event user interface corresponding to the event; (4) in response to the first user input, providing the event user interface surfaced on the display; (5) receiving, via the event user interface, a second user input including a command to accept the event invitation; (6) in response to the second user input, associating the event with a calendar within the calendar application and providing an option to access the associated third-party resource via the event user interface; (7) receiving, via the event user interface, a third user input including a command to access the third-party resource; (8) in response to the third user input, connecting with the third-party resource through an application programming interface corresponding to the third-party resource, where the application programming interface is provided within the context of the calendar application; (9) receiving, via the event user interface, a fourth user input including a command to interact with the third-party resource via the application programming interface; (10) in response to the fourth user input, interacting with the third-party resource via the application programming interface to generate third-party resource data for the event; and (11) reconciling the third-party resource data with event data corresponding to the event within the calendar application such that the event is updated with respect to the calendar.
Example 19 includes the method of example 18, including or excluding optional features. In this example, receiving the fourth user input including the command to interact with the third-party resource via the application programming interface includes detecting a user selection of at least one good or service offered by the third-party resource, and interacting with the third-party resource via the application programming interface to generate the third-party resource data for the event includes purchasing the at least one good or service for the event.
Example 20 includes the method of example 18 or 19, including or excluding optional features. In this example, the method further includes providing, via the calendar application, at least one reminder to access the third-party resource prior to the event.
In particular and in regard to the various functions performed by the above described components, devices, circuits, systems and the like, the terms (including a reference to a “means”) used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component, e.g., a functional equivalent, even though not structurally equivalent to the disclosed structure, which performs the function in the herein illustrated exemplary aspects of the claimed subject matter. In this regard, it will also be recognized that the innovation includes a system as well as a computer-readable storage media having computer-executable instructions for performing the acts and events of the various methods of the claimed subject matter.
There are multiple ways of implementing the claimed subject matter, e.g., an appropriate API, tool kit, driver code, operating system, control, standalone or downloadable software object, etc., which enables applications and services to use the techniques described herein. The claimed subject matter contemplates the use from the standpoint of an API (or other software object), as well as from a software or hardware object that operates according to the techniques set forth herein. Thus, various implementations of the claimed subject matter described herein may have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software.
The aforementioned systems have been described with respect to interaction between several components. It can be appreciated that such systems and components can include those components or specified sub-components, some of the specified components or sub-components, and additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical).
Additionally, it can be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and any one or more middle layers, such as a management layer, may be provided to communicatively couple to such sub-components in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but generally known by those of skill in the art.
In addition, while a particular feature of the claimed subject matter may have been disclosed with respect to one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes,” “including,” “has,” “contains,” variants thereof, and other similar words are used in either the detailed description or the claims, these terms are intended to be inclusive in a manner similar to the term “comprising” as an open transition word without precluding any additional or other elements.