Yep, instead of phone ringing choose SMS received, then instead of ringer volume change alert volume
I don't think that will work because by the time Tasker is aware of the incoming SMS, the silenced notification may have already been performed. You may have to use Music Play or, after having changed the silent mode, use Notification Sound in Tasker (but then you'll have two notifications to clear).
I was just thinking, just to be sure you should set up more. When you add the action to increase volume, add another action -> tasker -> wait (I recommend about 30 seconds), then add another action, same as you set the volume to increase, now set the volume to be silent again...
...The reason I say to do this is because if you get a call that turns your volume up, I think it stays up for all calls after that unless you take these extra steps. And if you don't add the time context it will turn your volume off during times when you want it on. Like I said tasker is a little complicated but if you take the time to set everything up completely like this, it won't let you down.
You're right. A better alternative to the Phone Ringing context is the Income Call context. Since Phone Ringing is an event, it will not restore settings afterwards. But Incoming Call is a state, and will restore settings after the call is completed.
Unfortunately there isn't (and can't be) any state context for an received SMS, however you can simulate one:
Context: Received SMS <number>
Enter Task: Variable Set %RECEIVEDSMS = 1
Context: Variable Value %RECEIVEDSMS = 1
Enter Task:
Silent Mode Off
Notification Sound <title> <message>
Variable Clear %RECEIVEDSMS
Since Variable Value is a state, Silent Mode will be restored to its original setting immediately after the notification sound.
You could also add a context:
Variable Value %SILENT Not Matches off
to the above profiles so that they only activate when silent mode is either on or vibrate.