def METHOD_NAME(self, request: Request, signed_params: str) -> HttpResponse:
    if request.method not in ALLOWED_METHODS:
        return render_error_page(request, body_text="HTTP 405: Method not allowed")
    try:
        params = unsign(signed_params)
    except (SignatureExpired, BadSignature):
        return render_to_response(
            "sentry/integrations/slack/expired-link.html",
            request=request,
        )
    integration = integration_service.get_integration(integration_id=params["integration_id"])
    if integration is None:
        raise Http404
    organization_memberships = OrganizationMember.objects.get_for_integration(
        integration, request.user
    )
    # Filter to organizations where we have sufficient role.
    organizations = [
        organization_membership.organization
        for organization_membership in organization_memberships
        if is_valid_role(organization_membership)
    ]
    teams_by_id = {
        team.id: team
        for organization in organizations
        for team in Team.objects.get_for_user(organization, request.user)
    }
    channel_name = params["channel_name"]
    channel_id = params["channel_id"]
    form = SelectTeamForm(list(teams_by_id.values()), request.POST or None)
    if request.method == "GET":
        return self.respond(
            "sentry/integrations/slack/link-team.html",
            {
                "form": form,
                "teams": teams_by_id.values(),
                "channel_name": channel_name,
                "provider": integration.get_provider(),
            },
        )
    if not form.is_valid():
        return render_error_page(request, body_text="HTTP 400: Bad request")
    team_id = int(form.cleaned_data["team"])
    team = teams_by_id.get(team_id)
    if not team:
        return render_error_page(request, body_text="HTTP 404: Team does not exist")
    idp = identity_service.get_provider(
        provider_type="slack", provider_ext_id=integration.external_id
    )
    if idp is None:
        logger.info("slack.action.invalid-team-id", extra={"slack_id": integration.external_id})
        return render_error_page(request, body_text="HTTP 403: Invalid team ID")
    ident = identity_service.get_identity(
        filter={"provider_id": idp.id, "identity_ext_id": params["slack_id"]}
    )
    if not ident:
        return render_error_page(request, body_text="HTTP 403: User identity does not exist")
    external_team, created = ExternalActor.objects.get_or_create(
        actor_id=team.actor_id,
        team_id=team.id,
        organization=team.organization,
        integration_id=integration.id,
        provider=ExternalProviders.SLACK.value,
        defaults=dict(
            external_name=channel_name,
            external_id=channel_id,
        ),
    )
    analytics.record(
        "integrations.identity_linked",
        provider="slack",
        actor_id=team.actor_id,
        actor_type="team",
    )
    if not created:
        message = ALREADY_LINKED_MESSAGE.format(slug=team.slug)
        integration_service.send_message(
            integration_id=integration.id,
            organization_id=team.organization_id,
            channel=channel_id,
            message=message,
        )
        return render_to_response(
            "sentry/integrations/slack/post-linked-team.html",
            request=request,
            context={
                "heading_text": ALREADY_LINKED_TITLE,
                "body_text": message,
                "channel_id": channel_id,
                "team_id": integration.external_id,
            },
        )
    # Turn on notifications for all of a team's projects.
    notifications_service.update_settings(
        external_provider=ExternalProviders.SLACK,
        notification_type=NotificationSettingTypes.ISSUE_ALERTS,
        setting_option=NotificationSettingOptionValues.ALWAYS,
        actor=RpcActor(id=team.id, actor_type=ActorType.TEAM),
    )
    message = SUCCESS_LINKED_MESSAGE.format(slug=team.slug, channel_name=channel_name)
    integration_service.send_message(
        integration_id=integration.id,
        organization_id=team.organization_id,
        channel=channel_id,
        message=message,
    )
    return render_to_response(
        "sentry/integrations/slack/post-linked-team.html",
        request=request,
        context={
            "heading_text": SUCCESS_LINKED_TITLE,
            "body_text": message,
            "channel_id": channel_id,
            "team_id": integration.external_id,
        },
    )