*** id: e3af68b8-36ec-4605-bb9d-2b2101ee3b41 title: TapAction slug: /dotnet/reference/calling/actions/tap description: The TapAction is used to tap a call. max-toc-depth: 3 ---------------- [call]: /docs/server-sdk/v2/dotnet/reference/calling/call#tapasync [signalwire-relay-calling-calltap]: /docs/server-sdk/v2/dotnet/reference/calling/call-tap [signalwire-relay-calling-calltapdevice]: /docs/server-sdk/v2/dotnet/reference/calling/call-tap-device [signalwire-relay-calling-calltapstate]: /docs/server-sdk/v2/dotnet/reference/calling/call-tap-state [signalwire-relay-calling-stopresult]: /docs/server-sdk/v2/dotnet/reference/calling/results/stop [signalwire-relay-calling-tapresult]: /docs/server-sdk/v2/dotnet/reference/calling/results/tap # SignalWire.Relay.Calling.TapAction This object returned from [`TapAsync`][call] method that represents a tap operation that is currently active on a call. ## Properties | Property | Type | Description | | :------------- | :--------------------------------------------------------------------------------- | :------------------------------------------------ | | `ControlID` | string | The identifier used to control the operation. | | `Result` | [`SignalWire.Relay.Calling.TapResult`][signalwire-relay-calling-tapresult] | Final result of tapping. | | `State` | [`SignalWire.Relay.Calling.CallTapState`][signalwire-relay-calling-calltapstate] | Current state of the tap operation. | | `Completed` | bool | Whether the tap operation has completed. | | `Payload` | [`SignalWire.Relay.Calling.CallTap`][signalwire-relay-calling-calltap] | Payload sent to Relay to start the tap operation. | | `SourceDevice` | [`SignalWire.Relay.Calling.CallTapDevice`][signalwire-relay-calling-calltapdevice] | The source device of the tap operation. | ## Methods ### Stop Stop the action immediately. **Parameters** *None* **Returns** [`SignalWire.Relay.Calling.StopResult`][signalwire-relay-calling-stopresult] - The result object to interact with. **Examples** > Start tapping and stop it if `agent` is not available in 3 seconds. ```csharp TapAction actionTap = call.TapAsync( new CallTap { Audio = new CallTap.AudioParams { Direction = CallTap.AudioParams.AudioDirection.both, } }, new CallTapDevice { Type = CallTapDevice.DeviceType.rtp, Parameters = new CallTapDevice.RTPParams { Address = "1.2.3.4", Port = 12345, } }); Thread.Sleep(3000); if (!agent.IsAvailable) { StopResult resultStop = actionTap.Stop(); } ```