import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; import { BsMicrosoftTeams } from "react-icons/bs"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Button, FormControl, Input } from "@app/components/v2"; import { useToggle } from "@app/hooks"; import { useUpdateServerConfig } from "@app/hooks/api"; import { AdminIntegrationsConfig } from "@app/hooks/api/admin/types"; const microsoftTeamsFormSchema = z.object({ appId: z.string(), clientSecret: z.string(), botId: z.string() }); type TMicrosoftTeamsForm = z.infer; type Props = { adminIntegrationsConfig?: AdminIntegrationsConfig; }; export const MicrosoftTeamsIntegrationForm = ({ adminIntegrationsConfig }: Props) => { const { mutateAsync: updateAdminServerConfig } = useUpdateServerConfig(); const [isMicrosoftTeamsAppIdFocused, setIsMicrosoftTeamsAppIdFocused] = useToggle(); const [isMicrosoftTeamsClientSecretFocused, setIsMicrosoftTeamsClientSecretFocused] = useToggle(); const [isMicrosoftTeamsBotIdFocused, setIsMicrosoftTeamsBotIdFocused] = useToggle(); const { control, handleSubmit, setValue, formState: { isSubmitting, isDirty } } = useForm({ resolver: zodResolver(microsoftTeamsFormSchema) }); const onSubmit = async (data: TMicrosoftTeamsForm) => { await updateAdminServerConfig({ microsoftTeamsAppId: data.appId, microsoftTeamsClientSecret: data.clientSecret, microsoftTeamsBotId: data.botId }); createNotification({ text: "Updated admin Microsoft Teams configuration. It can take up to 5 minutes to take effect.", type: "success" }); }; useEffect(() => { if (adminIntegrationsConfig) { setValue("appId", adminIntegrationsConfig.microsoftTeams.appId); setValue("clientSecret", adminIntegrationsConfig.microsoftTeams.clientSecret); setValue("botId", adminIntegrationsConfig.microsoftTeams.botId); } }, [adminIntegrationsConfig]); return (
Microsoft Teams
Step 1: Create and configure Microsoft Teams bot and Azure Resources. Please refer to the documentation below for more information.
Step 2: Configure your instance-wide settings to enable integration with Microsoft Teams. Copy the App ID and Client Secret from your Microsoft Teams bot's App Registration page. The Client Secret is the password for the bot.
( setIsMicrosoftTeamsAppIdFocused.on()} onBlur={() => setIsMicrosoftTeamsAppIdFocused.off()} onChange={(e) => field.onChange(e.target.value)} /> )} /> ( setIsMicrosoftTeamsClientSecretFocused.on()} onBlur={() => setIsMicrosoftTeamsClientSecretFocused.off()} onChange={(e) => field.onChange(e.target.value)} /> )} /> ( setIsMicrosoftTeamsBotIdFocused.on()} onBlur={() => setIsMicrosoftTeamsBotIdFocused.off()} onChange={(e) => field.onChange(e.target.value)} /> )} />
); };