# Work with Requests

The following are Apex classes for working with Slack actions.

## RequestContext Class

Describes the context in which a particular Slack action is invoked.

**Usage**

`RequestContext` exposes information about the source of the action in Slack, performs custom logic, and obtains the correct Slack client to respond to Slack based on the request. Each action type receives different information in its `RequestContext`.

```java
public override Slack.ActionHandler invoke(Map<String, Object> parameters, Slack.RequestContext context) {
        return Slack.ActionHandler.ack(new Handler(parameters, context));
```

See [Shortcuts and Slash Commands](/docs/platform/salesforce-slack-sdk/guide/actions_interact.md).

### RequestContext Methods

The following are methods for `RequestContext`.

#### getActionPayload()

Gets the action payload, such as the action name or type.

**Signature**

```java
public Slack.ActionPayload getActionPayload()
```

**Return Value**

Type: Slack.ActionPayload

#### getAppId()

Gets the ID of the Slack app.

**Signature**

```java
public String getAppId()
```

**Return Value**

Type: String

#### getChannelId()

Gets the channel ID.

**Signature**

```java
public String getChannelId()
```

**Return Value**

Type: String

#### getEnterpriseId()

Gets the enterprise ID. See [Look for enterprise IDs](https://api.slack.com/enterprise/grid/developing#supporting-and-developing-apps-for-enterprise-grid\_\_identifying-enterprise-grid-workspaces\_\_look-for-enterprise-ids).

**Signature**

```java
public String getEnterpriseId()
```

**Return Value**

Type: String

#### getFormData()

Gets the form field values from the modal view.

**Signature**

```java
public Map<String,Object> getFormData()
```

**Return Value**

Type: Map\<String,Object>

#### getMessageContext()

Gets the message context.

**Signature**

```java
public Slack.MessageContext getMessageContext()
```

**Return Value**

Type: Slack.MessageContext

#### getTeamId()

**Signature**

```java
public String getTeamId()
```

**Return Value**

Type: String

#### getTriggerId()

**Signature**

```java
public String getTriggerId()
```

**Return Value**

Type: String

#### getUserId()

**Signature**

```java
public String getUserId()
```

**Return Value**

Type: String

#### getViewContext()

**Signature**

```java
public Slack.ViewContext getViewContext()
```

**Return Value**

Type: Slack.ViewContext

***

## RequestContext.Builder Class

Contains methods to build an instance of the `Slack.RequestContext` class.

A Builder object is obtained by invoking one of the `RequestContext.Builder` methods defined by the `RequestContext` class.

### RequestContext.Builder Methods

The following are methods for `RequestContext.Builder`.

#### actionPayload(actionPayload)

**Signature**

```java
public Slack.RequestContext.Builder actionPayload(Slack.ActionPayload actionPayload)
```

**Parameters**

*actionPayload*

Type: Slack.ActionPayload

**Return Value**

Type: Slack.RequestContext.Builder

#### appId(appId)

**Signature**

```java
public Slack.RequestContext.Builder appId(String appId)
```

**Parameters**

*appId*

Type: String

**Return Value**

Type: Slack.RequestContext.Builder

#### build()

Returns an instance of the `Slack.RequestContext` object.

**Signature**

```java
public Slack.RequestContext build()
```

**Return Value**

Type: Slack.RequestContext

#### channelId(channelId)

**Signature**

```java
public Slack.RequestContext.Builder channelId(String channelId)
```

**Parameters**

*channelId*

Type: String

**Return Value**

Type: Slack.RequestContext.Builder

#### enterpriseId(enterpriseId)

**Signature**

```java
public Slack.RequestContext.Builder enterpriseId(String enterpriseId)
```

**Parameters**

*enterpriseId*

Type: String

**Return Value**

Type: Slack.RequestContext.Builder

#### formData(formData)

**Signature**

```java
public Slack.RequestContext.Builder formData(Map<String,Object> formData)
```

**Parameters**

*formData*

Type: Map\<String,Object>

**Return Value**

Type: Slack.RequestContext.Builder

#### messageContext(messageContext)

**Signature**

```java
public Slack.RequestContext.Builder messageContext(Slack.MessageContext messageContext)
```

**Parameters**

*messageContext*

Type: [Slack.MessageContext](/docs/platform/salesforce-slack-sdk/guide/apex_ref_message_context.md)

**Return Value**

Type: Slack.RequestContext.Builder

#### teamId(teamId)

**Signature**

```java
public Slack.RequestContext.Builder teamId(String teamId)
```

**Parameters**

*teamId*

Type: String

**Return Value**

Type: Slack.RequestContext.Builder

#### triggerId(triggerId)

**Signature**

```java
public Slack.RequestContext.Builder triggerId(String triggerId)
```

**Parameters**

*triggerId*

Type: String

**Return Value**

Type: Slack.RequestContext.Builder

#### userId(userId)

**Signature**

```java
public Slack.RequestContext.Builder userId(String userId)
```

**Parameters**

*userId*

Type: String

**Return Value**

Type: Slack.RequestContext.Builder

#### viewContext(viewContext)

**Signature**

```java
public Slack.RequestContext.Builder viewContext(Slack.ViewContext viewContext)
```

**Parameters**

*viewContext*

Type: Slack.ViewContext

**Return Value**

Type: Slack.RequestContext.Builder
