Como construir um softphone (usando o protocolo SIP) usando C #

Eu tenho esse desafio para criar um softphone sip usando tecnologias c # ou .net.

Por favor, guie-me a tecnologia, requisitos e especificações que são necessários para construir tal.

Requisitos possíveis:

Codecs suportados:

G.722.1, G.723.1, G.726, G.728, G.711, G.729, G.723.1, iLBC ,: G.711 (leis A e M), G.729A / B / D / E, AMR, GSM 6.10 / EFR, iLBC, Speex

Voz:

Monitoramento de Qualidade em Tempo Real (MOS) 3 linhas telefônicas independentes
Atendimento automático / não perturbe a chamada
Encaminhando Áudio Full Duplex
Gravação comprimir os dados de áudio.

Totalmente compatível com SIP softphone / discador para PC2Phone e Mobile2Phone (iPhone, Nokia N95) aplicativo com symbian s60, código-fonte completo deve fornecer.

Compatível com o Windows 2000 / XP / 2003 / Vista / Mac

Recurso de passagem NAT / Firewall

Funciona com qualquer servidor SIP de terceiros

Suporta proxy de saída SIP

Exibe o saldo da conta dos chamadores

Exibe o tempo de crédito da chamada

Cancelamento de eco automático

Ajuste automático do buffer de jitter

Último número Redial

História dos 10 últimos números discados

Lista de usuários de discagem rápida

Provisão rápida para clientes, somente nome de usuário e senha exigidos

questionAnswers(4)

yourAnswerToTheQuestion