GPT 操作库:Outlook
简介
本文档为开发者构建特定应用程序的 GPT 操作提供说明和指南。在继续之前,请确保您已熟悉以下信息:
此特定的 GPT 操作提供了有关如何连接到 Outlook 的概述,Outlook 是 Microsoft 的电子邮件和日历事件的 Web 服务。此操作假定用户已登录,并允许他们从 Outlook 发送和检索电子邮件及日历事件。
价值 + 示例业务用例
价值:用户现在可以利用 ChatGPT 的自然语言功能直接连接到 Outlook
示例用例:
- 用户可以查找当天所有的会议,并让 ChatGPT 总结这一天
- 用户可以直接将 ChatGPT 的输出通过电子邮件发送给某人
应用程序信息
应用程序关键链接
在开始之前,请查看应用程序中的这些链接:
- 应用程序网站:https://portal.azure.com/
- 应用程序 API 文档:https://learn.microsoft.com/en-us/graph/api/overview?view=graph-rest-1.0
应用程序先决条件
在开始之前,请确保在您的应用程序环境中完成以下步骤:
- 确保您有权在 Azure 中设置应用程序注册
ChatGPT 步骤
自定义 GPT 说明
创建自定义 GPT 后,请将以下文本复制到“说明”面板中。有疑问吗?请查看 入门示例,了解此步骤的详细信息。
**Context**: you are specialized GPT designed to manage emails and calendar events through API connections to Microsoft Outlook. This GPT can create, read, send, and alter emails and calendar events based on user instructions. It ensures efficient handling of communication and scheduling needs by leveraging Microsoft Graph API for seamless integration with Outlook services.
**Instructions**:
- When asked to perform a task, use the available actions via the microsoft.graph.com API.
- You should behave professionally and provide clear, concise responses.
- Offer assistance with tasks such as drafting emails, scheduling meetings, organising calendar events, and retrieving email or event details.
- Ask for clarification when needed to ensure accuracy and completeness in fulfilling user requests.
- Always conclude an email by signing off with logged in user's name which can be retrieved via the User.Read endpoint
OpenAPI 架构
创建自定义 GPT 后,请将以下文本复制到“操作”面板中。有疑问吗?请查看 入门示例,了解此步骤的详细信息。
openapi: 3.1.0
info:
title: Microsoft Graph API Integration
version: 1.0.0
servers:
- url: https://graph.microsoft.com/v1.0
components:
securitySchemes:
OAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
scopes:
https://graph.microsoft.com/User.Read: Access current user profile
https://graph.microsoft.com/Mail.Read: Read user mail
https://graph.microsoft.com/Mail.Send: Send mail
https://graph.microsoft.com/Calendars.ReadWrite: Read and write user calendars
schemas:
UserProfile:
type: object
properties:
id:
type: string
displayName:
type: string
mail:
type: string
UserMessage:
type: object
properties:
id:
type: string
subject:
type: string
bodyPreview:
type: string
CalendarEvent:
type: object
properties:
id:
type: string
subject:
type: string
start:
type: object
properties:
dateTime:
type: string
timeZone:
type: string
end:
type: object
properties:
dateTime:
type: string
timeZone:
type: string
NewEvent:
type: object
properties:
subject:
type: string
start:
type: object
properties:
dateTime:
type: string
timeZone:
type: string
end:
type: object
properties:
dateTime:
type: string
timeZone:
type: string
attendees:
type: array
items:
type: object
properties:
emailAddress:
type: object
properties:
address:
type: string
name:
type: string
SendMailRequest:
type: object
properties:
message:
type: object
properties:
subject:
type: string
body:
type: object
properties:
contentType:
type: string
content:
type: string
toRecipients:
type: array
items:
type: object
properties:
emailAddress:
type: object
properties:
address:
type: string
security:
- OAuth2: []
paths:
/me:
get:
operationId: getUserProfile
summary: Get the authenticated user's profile
security:
- OAuth2: []
responses:
'200':
description: A user profile
content:
application/json:
schema:
$ref: '#/components/schemas/UserProfile'
/me/messages:
get:
operationId: getUserMessages
summary: Get the authenticated user's messages
security:
- OAuth2: []
parameters:
- name: $top
in: query
required: false
schema:
type: integer
default: 10
description: Number of messages to return
- name: $filter
in: query
required: false
schema:
type: string
description: OData filter query to narrow results
- name: $orderby
in: query
required: false
schema:
type: string
description: OData order by query to sort results
responses:
'200':
description: A list of user messages
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserMessage'
/me/sendMail:
post:
operationId: sendUserMail
summary: Send an email as the authenticated user
security:
- OAuth2: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SendMailRequest'
responses:
'202':
description: Accepted
/me/events:
get:
operationId: getUserCalendarEvents
summary: Get the authenticated user's calendar events
security:
- OAuth2: []
responses:
'200':
description: A list of calendar events
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CalendarEvent'
post:
operationId: createUserCalendarEvent
summary: Create a new calendar event for the authenticated user
security:
- OAuth2: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewEvent'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/CalendarEvent'
Authentication Instructions
Below are instructions on setting up authentication with Outlook. Have questions? Check out Getting Started Example to see how this step works in more detail.
Azure Steps
- App Registration: The first step is to register a new App registration in the Azure Portal which will be used to integrate OAuth between our application and Azure Active Directory/Entra ID. Simply provide the application with a relevant name, leaving the Redirect URI blank for now as we will return to this, and save.
- Certificate & Secrets: We next need to generate a client secret to provide secure communication between the GPT and Azure. Within the App registration, navigate to Certificate & secrets in the sidebar
Click New client secret and create a new client secret with desired name and expiry date. Clicking save will provide us a Secret to use in our GPT creation. Make sure to save the Value field as it’ll only be visible at creation, and we will need it later!
- API Permissions: The next step is to provide the integration with the scope it needs to perform our specific required actions. Within the App registration, navigate to Manage > API permissions in the sidebar.
Click Add a permission and Microsoft graph > Delegated Permissions as options in the opened side menu. Use the search bar to add the following permissions:
- Calendars.ReadWrite
- Mail.Read
- Mail.Send
- User.Read
In ChatGPT
In ChatGPT, click on "Authentication" and choose "OAuth". Enter in the information below.
- Client ID: The value listed on the Azure Registered App’s Overview page under Application (client) ID
- Client Secret: the secret Value saved from step 2 of Azure Steps
For the following two inputs, replace
- Authorization URL: https://login.microsoftonline.com/
/oauth2/v2.0/authorize - Token URL: https://login.microsoftonline.com/
/oauth2/v2.0/token - Scope: https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/Mail.Read https://graph.microsoft.com/Calendars.ReadWrite
- Token Exchange Method: Default (POST Request)
Post-Action Steps
Once you've set up authentication in ChatGPT, follow the steps below in the application to finalize the Action.
- Copy the callback URL from the GPT Action
- In the Azure app, navigate to the Manage > Authentication tab, click Add a platform, select Web and add your callback URL under Redirect URI
FAQ & Troubleshooting
- Callback URL Error: If you get a callback URL error in ChatGPT, double check the Callback URL value as it can occasionally change depending on any alterations made to the authentication
Are there integrations that you’d like us to prioritize? Are there errors in our integrations? File a PR or issue in our github, and we’ll take a look.